質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

解決済

C言語 平均の出し方。

tattakahiiii
tattakahiiii

総合スコア27

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

2回答

0評価

0クリップ

3102閲覧

投稿2018/07/27 19:54

編集2018/07/28 05:09

C<コード>

#include <stdio.h> #include <stdlib.h> #define NUM 100 /*** 構造体定義の宣言 ***/ typedef struct Body{ char name[32]; int age; double height; double weight; }Body; /*** 関数のプロトタイプ宣言 ***/ FILE* check_fopen(char filename[],char mode[]); int print_bodydata(const Body* pData); int input_bodydata(Body *pData); int main(void) { /*** 変数の宣言 ***/ int i,menu,rc=0,cnt=0; Body Data[100]; FILE* fp; const char* ave_agee = "年齢"; const char* ave_heightt = "身長"; const char* ave_weightt = "体重"; const char* moji = ""; int ave_age = 0; //平均を入れる変数 double average = 0; double ave_height = 0,ave_weight = 0;//平均を入れる変数 while(1){ printf("\n==== 操作メニュー ====\n"); printf("1:ファイル読み込み\n"); printf("2:全データ表示\n"); printf("3:新データ入力\n"); printf("4:ファイル書き出し\n"); printf("1~4以外:終 了\n\n"); printf("操作No の入力:"); scanf("%d",&menu); printf("\n"); switch(menu) { case 1: printf("===ファイル読み込み===\n"); /*** 処 理 内 容 ***/ fp=check_fopen("sample.txt","r"); for(i=0;i<NUM;i++){ rc=fscanf(fp,"%s\t%d\t%lf\t%lf\r\n", Data[i].name,&Data[i].age, &Data[i].height,&Data[i].weight); if(rc==EOF)break; } cnt=i; printf("%d件のデータを読み込みました。\n",cnt); fclose(fp); printf("ファイルを閉じました。\n"); break; case 2: printf("\n===全データ表示===\n"); /*** 処 理 内 容 ***/ printf("\n名前\t年齢\t身長\t 体重\n"); for(i=0;i<cnt;i++) print_bodydata(&Data[i]); printf("出力したい平均を入力\t年齢・身長・体重\n"); // while(1){ // scanf("%s",&moji); // if(moji==ave_agee){ for(i=0;i<cnt;i++)ave_age = ave_agee_sum(&Data[i]); average = ave_age/cnt; printf("%d",average); break; case 3: printf("\n===新データ入力===\n"); /*** 処 理 内 容 ***/ break; case 4: printf("\n===ファイル書き出し===\n"); /*** 処 理 内 容 ***/ break; default: printf("\n===プログラム終了===\n"); return 0; } } return 0; } /*** 関 数(自作の関数も作れれば作る)***/ FILE* check_fopen(char filename[],char mode[]) { FILE* fp; fp = fopen(filename,mode); if(fp==NULL){ printf("\nファイルを開けませんでした。\n"); exit(-1); } printf("\nファイルを開きました。\n"); return fp; } int print_bodydata(const Body* pData) { printf("%s\t", pData->name); printf("%d歳\t", pData->age); printf("%.1fcm\t", pData->height); printf("%7.1fkg\n", pData->weight); return 0; } int input_bodydata(Body *pData) { printf("名前:"); scanf("%s", pData->name); printf("年齢:"); scanf("%d", &pData->age); printf("身長:"); scanf("%lf", &pData->height); printf("体重:"); scanf("%lf", &pData->weight); printf("\n"); return 0; } int ave_agee_sum(Body *pData) { int aa = 0 ; aa += pData->name; return aa; }

<出力内容>
1〜4の数字を入力して、別のファイルのデータを読み込み、読み込んだ内容を表示するプログラムです。
別のフォルダに下記のようなデータが入っており、計55件入っております。
”名前       年齢   身長   体重 
米山 裕太     32   185   85  ”

<質問内容>

case2で全データの表示、年齢、身長、体重の各平均を出力したいと考えております。
表示はできたのですが、平均が出力できません。
平均年齢だけのプログラムを書いたのですが、-1972264960と出力され、うまくいきません。

どなたか原因のわかる方はいらっしゃいますでしょうか。

以上、よろしくお願いいたします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

otn

2018/07/27 21:02

プログラム部分の前に、```C という行を入れ、後に ``` という行を入れてください。
cateye

2018/07/31 21:01

解決したならば、ベストアンサーを選択して下さい。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。