課題で、
キーボードから入力された数値の平均を計算して表示し、平均以上の数値、平均より小さい数値を表示するプログラムを考えているのですが、
実行例
./a.out
数値(-1で入力終了)? 1
数値(-1で入力終了)? 2
数値(-1で入力終了)? 3
数値(-1で入力終了)? 4
数値(-1で入力終了)? 5
数値(-1で入力終了)? 6
数値(-1で入力終了)? 7
数値(-1で入力終了)? 8
数値(-1で入力終了)? 9
数値(-1で入力終了)? 10
数値(-1で入力終了)? 11
平均は 6.0 です。
平均以上の数値:6 7 8 9 10 11
平均より小さい数値:1 2 3 4 5
下の2行
平均以上の数値:6 7 8 9 10 11
平均より小さい数値:1 2 3 4 5
がどう書けばいいのか分かりません。
(※途中まで解決したので更新しました。ここまでアドバイスくださった
皆さんにお礼申し上げます。)
私のプログラムで実行すると、次のようになってしまい、すべて6.0となってしまいます。
./a.out
数値(-1で入力終了)?1
数値(-1で入力終了)?2
数値(-1で入力終了)?3
数値(-1で入力終了)?4
数値(-1で入力終了)?5
数値(-1で入力終了)?6
数値(-1で入力終了)?7
数値(-1で入力終了)?8
数値(-1で入力終了)?9
数値(-1で入力終了)?10
数値(-1で入力終了)?11
数値(-1で入力終了)?-1平均は、6.0です。
平均以上の数値:6.0 6.0 6.0 6.0 6.0 6.0
平均以下の数値:6.0 6.0 6.0 6.0 6.0
私のプログラムです
C
1#include <stdio.h> 2 3int main(void) 4{ 5 int val[100] = {0}; 6 int *p = val; 7 int sum=0; 8 int count = -1; 9 int i; 10 int j; 11 do{ 12 printf("数値(-1で入力終了)?"); 13 scanf("%d",p); 14 count++; 15 }while(*p++ != -1); 16 17 for(p=val;*p != -1 ;p++){ 18 sum += *p; 19 } 20 double ave= (double)sum/count; 21 printf("\n"); 22 printf("平均は、%.1lfです。",ave); 23 printf("\n"); 24 25 printf("平均以上の数値:"); 26 for(i = 0; i < count; i++ ){ 27 if( val[i] >= ave ){ 28 printf("%.1lf ", val[i]); 29 } 30 } 31 printf("\n"); 32 printf("平均以下の数値:"); 33 34 for( i = 0; i < count; i++ ){ 35 if( val[i] < ave ){ 36 printf("%.1lf ", val[i]); 37 } 38 } 39 printf("\n"); 40 41 42 return 0; 43}
アドバイスよろしくお願いします。
回答4件
あなたの回答
tips
プレビュー