C言語の構造体と関数を用いて、平均を求める計算をしたいのですが。自分なりに考えたのですが、平均が求めれません。 どなたか教えていただけませんか?

C言語の構造体と関数を用いて、平均を求める計算をしたいのですが。自分なりに考えたのですが、平均が求めれません。 どなたか教えていただけませんか? 名前、身長、体重をメンバとしてやってます。 Name Height(cm) Weight(kg) taro 174.2 72.3 jiro 152.3 49.2 sabu 168.6 84.8 人数が変更されても処理できる関数を作成したいのです。 結果をこのようにしたいのですが 平均身長:165.0cm 平均体重: 68.0kg 下のプログラムは自分なりに作ったプログラムです。 #include <stdio.h> #include <string.h> /*構造体の宣言*/ struct student { char name[6]; double height; double weight; }; /*名前、身長、体重、構造体オブジェクトのメンバに格納*/ struct student set_student(char n[], double m, double w) { struct student ss; strcpy(&ss.name[0], n); ss.height = m; ss.weight = w; return ss; } /*平均身長を求める関数の関数定義*/ void average_height(struct student ss) { printf("平均身長: %0.1f\n",ss.height); } /*平均体重を求める関数の関数定義*/ void average_weight(struct student ss) { printf("平均体重:%0.1f\n",ss.weight); } int main(void) { struct student seito[3]; seito[0] = set_student("taro", 174.2, 72.3); seito[1] = set_student("jiro", 152.3, 49.2); seito[2] = set_student("sabu", 168.6, 84.8); /*平均身長、平均体重を表示する*/ average_height(seito[0]); average_weight(seito[0]); return 0; } 平均を求める関数を定義し、結果を表示させる方法がよく分かりません。具体的に教えてもらえませんか。どうかよろしくお願いします。

C言語関連6,026閲覧xmlns="http://www.w3.org/2000/svg">25

ベストアンサー

0

#include <stdio.h> /*構造体の宣言*/ typedef struct { char *name; double height; double weight; } Person; /*平均身長を求める関数の関数定義*/ void average_height(Person *students, int num) { int i; double sum = 0.0; for(i=0; i<num; i++) sum += students[i].height; printf("平均身長: %5.1f\n", sum/num); } /*平均体重を求める関数の関数定義*/ void average_weight(Person *students, int num) { int i; double sum = 0.0; for(i=0; i<num; i++) sum += students[i].weight; printf("平均身長: %4.1f\n", sum/num); } int main(void) { Person students[] = { {"taro", 174.2, 72.3}, {"jiro", 152.3, 49.2}, {"sabu", 168.6, 84.8}, }; /*平均身長、平均体重を表示する*/ average_height(students, sizeof students / sizeof *students); average_weight(students, sizeof students / sizeof *students); return 0; }

ThanksImg質問者からのお礼コメント

このような質問に回答ありがとうございます。これからも、c言語を学んでいく中で、質問することがあると思いますが、よろしくお願いします。

お礼日時:2010/1/24 10:44

その他の回答(1件)

0

簡単に書いたので,もしかしたら必要な点が削除されたかもしれませんが参考程度に. #include <stdio.h> #include <math.h> #include <stdlib.h> #include <iostream> typedef struct { char name[256]; double h; double w; }Private; Private set_student(char*n,double height,double weight) { static Private sub; strcpy(sub.name,n); sub.h=height; sub.w=weight; return sub; } void Heikin(int num,Private* d) { int i; static double hh,wh; for(i=0;i<num;i++) { hh+=d[i].h; wh+=d[i].w; } hh/=num; wh/=num; printf("hikin::(Height)%g,(Weigh)%g\n",hh,wh); } int main() { int datanum = 1; int i; Private *data; data=(Private*)malloc(sizeof(Private)*datanum); data[0]=set_student("Mr.A",270.0,60.0); /* sprintf(data[0].name,"Mr.A"); data[0].h = 170.0; data[0].w = 60.0; for(i=0;i<datanum;i++) { printf("Name:"); scanf("%s",data[i].name); printf("Height:"); scanf("%f",data[i].h); printf("Weight:"); scanf("%f",data[i].w); } */ Heikin(datanum,data); return 0; }