身長の分布を3センチ刻みで表示するプログラムを書きたいのですが、3センチ刻みで表示するやり方が思い付かず質問させて頂きました。すでにデータの大きさや数値は決まっている状態です。
###実行のイメージ
身体検査一覧表
氏名 身長 視力
AKASAKA Tadao 162 0.3
KATOH Tomiaki 173 0.7
SAITOU Syouji 175 2.0
TAKEDA Shinya 171 1.5
NAKAGAWA Masaki 168 0.4
HAMADA Tetsuaki 174 1.2
MATSUTOMI Akio 169 0.8
身長の分布
140〜 : 0人
143〜 : 0人
146〜 : 0人
149〜 : 0人
152〜 : 0人
155〜 : 0人
158〜 : 0人
161〜 : 1人
164〜 : 0人
167〜 : 2人
170〜 : 1人
173〜 : 3人
176〜 : 0人
179〜 : 0人
182〜 : 0人
185〜 : 0人
188〜 : 0人
191〜 : 0人
194〜 : 0人
197〜 : 0人
200〜 : 0人
######私が途中まで書いたプログラムです
c
1#include<stdio.h> 2#define HMAX 200/*身長の最大値*/ 3 4typedef struct{ 5char name[20]; /*氏名*/ 6int height; /* 身長*/ 7double vision; /*視力*/ 8}PhysCheck; 9 10 11/*身長の分布を求める*/ 12void dist_height(const PhysCheck dat[], int n, int dist[]) 13{ 14 int i; 15 for(i=0;i<HMAX;i++) 16 dist[i]=0; 17 18 for(i=0; i<HMAX; i++) 19 if(dat[i].height >= 140 && dat[i].height <= 200) 20 dist[(int)(dat[i].height)]++; 21} 22 23 24int main(void) 25{ 26 int i; 27 PhysCheck x[] = { 28 {"AKASAKA Tadao", 162, 0.3}, 29 {"KATOH Tomiaki", 173, 0.7}, 30 {"SAITOU Syouji", 175, 2.0}, 31 {"TAKEDA Shinya", 171, 1.5}, 32 {"NAKAGAWA Masaki", 168, 0.4}, 33 {"HAMADA Tetsuaki", 174, 1.2}, 34 {"MATSUTOMI Akio", 169, 0.8}, 35 }; 36 37 int nx = sizeof(x)/sizeof(x[0]); /*人数*/ 38 int hdist[HMAX]; /*身長の分布*/ 39 40 puts("身体検査一覧表"); 41 puts("氏名 身長 視力"); 42 puts("---------------------------"); 43 for(i=0;i<nx;i++) 44 printf("%-18.18s%4d%5.1f\n", x[i].name, x[i].height, x[i].vision); 45 46 47 dist_height(x, nx, hdist); /*身長の分布を求める*/ 48 49 printf("\n身長の分布\n"); 50 for(i=0;i<HMAX;i=i+3) 51 printf("%d〜 : %d人\n", i, hdist[i]); 52 53 return 0; 54 55} 56
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/18 06:19