|
分類:[C/C++]
初めてお世話になります。Cのプログラミング課題でつまずいているのでお力お貸し頂けるとありがたいです。
以下のプログラムを構造体へのポインタを用いるように書き換えよ. その際, それぞれの学生の成績の合計点と各科目の平均点は, それぞれ関数を 用いて計算するようにせよ.
#include<stdio.h> #include<math.h>
typedef struct { char name[20]; int logi; int math; int ecom; } grade_t;
int main (void){
grade_t x[4] = { {"miki",90,80,90}, {"masami",70,85,85}, {"haruna",90,70,80}, {"rio",80,90,70}, };
int a[4]; int i; for (i=0;i<4;i++) { a[i] = x[i].logi + x[i].math + x[i].ecom;
printf("%sの合計点は%dです。\n", x[i].name,a[i]);
} typedef struct {
int logi; int math; int ecom; } grade_s;
grade_s A = {90,80,90}; grade_s B = {70,85,85}; grade_s C = {90,70,80}; grade_s D = {80,90,70};
double ave;
ave = A.logi + B.logi + C.logi + D.logi; ave = ave /4; printf("logiの平均は%lfです。\n",ave);
ave = A.math + B.math + C.math + D.math; ave = ave /4; printf("mathの平均は%lfです。\n",ave);
ave = A.ecom + B.ecom + C.ecom + D.ecom; ave = ave /4; printf("ecomの平均は%lfです。\n",ave); }
という課題に対して以下のようにプログラムを作りましたが、
#include<stdio.h> #include<math.h>
typedef struct { char name[20]; int logi; int math; int ecom; } grade_t;
void print_tensu(grade_t* p,int n); int main (void){
grade_t x[4] = { {"miki",90,80,90}, {"masami",70,85,85}, {"haruna",90,70,80}, {"morio",80,90,70}, }; grade_t* p = x; print_tensu(p,4);
return 0; } void print_tensu(grade_t* p,int n){ int i; int sum; for (i=0;i<4;i++) { sum = ((p+i)->logi) + ((p+i)->math) + ((p+i)->ecom);
printf("%sの合計点は%dです。\n", (p+i)->name,sum);
}
int main(void){ typedef struct {
int logi; int math; int ecom; } grade_s;
grade_s A = {90,80,90}; grade_s B = {70,85,85}; grade_s C = {90,70,80}; grade_s D = {80,90,70};
double ave;
/*ここからの処理がわかりません*/
ave = A.logi +B.logi + C.logi + D.logi; ave = ave /4; printf("logiの平均は%lfです。\n",ave);
ave = A.math + B.math + C.math + D.math; ave = ave /4; printf("mathの平均は%lfです。\n",ave);
ave = A.ecom + B.ecom + C.ecom + D.ecom; ave = ave /4; printf("ecomの平均は%lfです。\n",ave); }
A.logiなどをどのようにポインタで表示させるのかが全く分からず悩んでおります。なにかヒントがあればご指摘いただけないでしょうか。
|