テ ー マ : 整数配列の計算
プログラム説明: 配列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);
}