C言語による以下の記述の何がまちがっているのかを教えてください。お願いします。
以下の問題を解くために記述したものです。
,で区切られた数値を降順にしてくっつけるプログラムです。
シャープ入れると文字が大きくなったのでincludeから始まっていますが、じっさいのプログラムにはシャープが入っています。
下にある配列の中身を大きい順に並べ替えてくっつけてください。
例:もし配列{1,5,3,2}っていう配列があったら、大きい順に並べ替えると{5,3,2,1}となります。なので、答えは{5321}となります。
[15,1,93,52,66,31,87,0,42,77,46,24,99,10,19,36,27,4,58,76,2,81,50,102,33,94,20,14,80,82,49,41,12,143,121,7,111,100,60,55,108,34,150,103,109,130,25,54,57,159,136,110,3,167,119,72,18,151,105,171,160,144,85,201,193,188,190,146,210,211,63,207]
include<stdio.h>
int main(){
int cap = 200;
unsigned char a[cap], b[cap];
int c[cap], tmp;
int s, t, u, i, j, x;
printf("値を入力してください\n");
scanf("%s", &a);
t = 0;
u = 1;
//,を取り除き数値だけをbに格納する。また、elseで全部で何個あるかを記録する。
for ( s = 0;s < cap; ++s) {
if ( a[s] != ',' ) {
b[t] = a[s];
++t;
}else{
u =u+1;
}
//bをint型へ変換する。また、そのときcへ入れる。
for(x=0;x < cap;++x){
c[x] = (int)b[x];
}
//降順ソートする。
for (i=0; i<u; ++i){
for(j=i+1; j<total; ++j){
if(c[i]<c[j]){
tmp = c[i];
c[i] = c[j];
c[j] = tmp;
}
}
}
printf("降順ソートした数値\n");
for(i=0; i<u; i++){
printf("%d\n",c[i]);
}
return 0;
}
回答2件
あなたの回答
tips
プレビュー