テ ー マ : 整数配列の計算
プログラム説明: 配列Xに整数をキーボードより入力し、0が入力されたときそ
れまでに入力されたデータを降順にソートし、データ数、総和、
平均を出力する。
補 足 : データ数、総和、平均の桁位置を揃える。ただし、平均は小数点
以下4桁出力する。
出 力 例 :
データ入力
入力 X[0] ? 54
入力 X[1] ? 53
入力 X[2] ? 86
入力 X[3] ? 0
出力 X[0] = 86
出力 X[1] = 54
出力 X[2] = 53
データ数 = 3
総和 = 193
平均 = 64.3333
前回のナオユキさんと同じ課題なんですが、
ソートがうまくできません。
ほかの箇所は動くのですが、
入力した順番のまま表示してしまいます。
間違えている箇所の指摘をお願いします。
#include <stdio.h> main() { int ia,ib,iw,ig,X[256]; double hei; ia=ig=0; X[0]=0; printf("データ入力\n"); while(1){ printf("X[%d] ?",ia); scanf("%d",&iw); if(iw==0){ break; } ib=ia; do{ if(iw>=X[ib]){ X[ib+1]=X[ib]; ib--; } }while(ib<0&&iw<=X[ib]); X[ib+1]=iw; ia++; } for(ib=0;X[ib]!=0;ib++){ printf("出力 X[%d] =%d\n",ib,X[ib]); ig+=X[ib]; } hei=(double)ig/ia; printf("データ数 =%5d\n",ia); printf("総和 =%5d\n",ig); printf("平均 =%10.4f\n",hei); }