テストの平均点とともに平均点の分布を集計するプログラムをつくりたいのですが、分布の集計をする関数をどのように書けばいいいのか分かりません。
実行のイメージ
./a.out
各学生の点数を入力してください。
入力: 数学, 英語, 国語(カンマで区切る)
(いずれかに -1 を入力すると終了)
1人目:60,75,90
2人目:85,90,87
3人目:34,56,45
4人目:50,70,35
5人目:80,78,68
6人目:-1,-1,-1
人目 | 数学 英語 国語 | 平均1 | 60 75 90 | 75.0
2 | 85 90 87 | 87.3
3 | 34 56 45 | 45.0
4 | 50 70 35 | 51.7
5 | 80 78 68 | 75.3
範囲 | 人数
0以上- 10未満 | 0 人
10以上- 20未満 | 0 人
20以上- 30未満 | 0 人
30以上- 40未満 | 0 人
40以上- 50未満 | 1 人
50以上- 60未満 | 1 人
60以上- 70未満 | 0 人
70以上- 80未満 | 2 人
80以上- 90未満 | 1 人
90以上-100未満 | 0 人
100 | 0 人
私のプログラムです。
C
1#include <stdio.h> 2#define DISTIBUTION 3 3 4void Show_average(int *j,int *e,int *m,double *ave); 5 6void Show_distribution(); 7 8double main(void) 9{ 10 int J_test[100]={0}; 11 int E_test[100]={0}; 12 int M_test[100]={0}; 13 int cnt=0; 14 double ave[100]=0; 15 16 printf("各学生の点数を入力してください。\n"); 17 printf("入力: 数学, 英語, 国語(カンマで区切る)\n"); 18 printf("いずれかに -1 を入力すると終了)\n "); 19 printf("%d人目: ", cnt+1); 20 21 scanf("%d,%d,%d", &J_test[cnt], &E_test[cnt],&M_test[cnt]); 22 while(0 <= J_test[cnt] && 0 <= E_test[cnt] && 0<= M_test[cnt] ){ 23 cnt++; 24 printf("%d人目: ", cnt+1); 25 scanf("%d,%d,%d",&J_test[cnt], &E_test[cnt],&M_test[cnt]); 26} 27 J_test[cnt] = E_test[cnt] = M_test[cnt] = -1; 28 29 Show_average(int J_test,int E_test,int M_test,double ave); 30 Show_distribution(void); 31 32 return{0}; 33} 34 35void Show_average(int *j,int *e,int *m,double *ave) 36{ 37 int i=1; 38 printf("\n"); 39 printf("\n"); 40 printf("人目 | 数学 英語 国語 | 平均"); 41 printf("-----+----------------+--------"); 42 while( 0 <= *j && 0 <= *e && 0 <= *m ) { 43 printf("%d | %d %d | %.1f¥n",i++, *j++, *e++, *ave++); 44 } 45} 46 47void Show_distribution() 48{ 49 int distribution[DISTIBUTION]={0}; 50 int j; 51 distribution[weight[i] /50]++ ; 52 53 printf("\n"); 54 printf("範囲| 人数"); 55 printf("----------------+--------"); 56 57 for(j=0; j<DISTIBUTION; j++){ 58 printf("%d以上-%d未満 | %d人¥n", j*10 ,(j+1)*10-1,distrib[j]); 59 } 60 return 0; 61}
回答1件
あなたの回答
tips
プレビュー