###実現したいこと
平均値に最も近い数を出したい。
###問題点
平均値との差の最小値を求める部分のifが実行されていない。 printfをifの中に入れて確認してみたがそのprintfが出力されなかった。 ちなみに、平均値との差まではあってました。
###実行結果
n=5 10 2 6 23 4 avg=9.000000 i=0 fabs(sa[i])=1.000000 i=1 fabs(sa[i])=7.000000 i=2 fabs(sa[i])=3.000000 i=3 fabs(sa[i])=14.000000 i=4 fabs(sa[i])=5.000000 最小値に一番近い数は0.000000です.
###コード
C
1//n個の実数値の平均値に最も近い数を出力する 2 3#include<stdio.h> 4#include<math.h> 5 6int main(void) 7{ 8 int n,i,mini; 9 double avg,sa[100],min,a[100],sum; 10 sum=0; 11 avg=0; 12 13 printf("n="); 14 scanf("%d",&n); 15 for(i=0;i<n;i++){ 16 scanf("%lf",&a[i]); 17 sum+=a[i]; 18 //printf("sum=%f\n",sum); 19 } 20 //printf("sum=%f\n",sum); 21 avg=sum/n; 22 printf("avg=%f\n",avg); 23 24 //平均値との差を求める 25 for(i=0;i<n;i++){ 26 sa[i]=avg-a[i]; 27 //printf("sa[%d]=%f\n",i,fabs(sa[i])); 28 } 29 30 //平均値との差の最小値を求める 31 min=fabs(sa[0]); 32 //printf("min=%f\n",min); 33 for(i=0;i<n;i++){ 34 printf("i=%d\n",i); 35 printf("fabs(sa[i])=%f\n",fabs(sa[i])); 36 if(min>fabs(sa[i])){ 37 min=fabs(sa[i]); 38 mini=i; //この時のiを記憶 39 printf("mini=%d",mini); 40 } 41 } 42 //printf("mini=%d",mini); 43 printf("最小値に一番近い数は%fです.\n",a[mini]); 44 45 return 0; 46 47}
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/26 03:55