以下の文を出力して入力:に16進数を入れると10進数に変換した数値の小さい列順に並ぶプログラムを作りたいのですがうまく出来ません。
仕様は以下に記載します。
入力:__、__、__、__、__EnterKeyで結果を表示。
以下のバブルソートの文のどこをいじれば良いでしょうか?
返答宜しくお願いします。2つまでは順になるのですが、3つめ以降は順番がおかしくなってしまいます。
基本的には文を変えないでバブルソートの処理を少しいじって改善できるらしいのですが分かりません。
#include <stdio.h>
int main (void)
{
char data[256];
int val[100];
int i = 0;
int work;
int j;
int k;
printf("入力 = ");
scanf("%s",data);
for(i=0;i<100;i++){
val = 0;
}
k=0;
for(i = 0;i<100 ; i++){
if(data == 0x00){//dataがNULLだったら処理を抜ける
k++;
break;//enterキーでprintf出力
}
else if(data == ','){//カンマだったら
/*printf("%d\n",k);*/
k++;
}
else{
if(data >= 'A' && data <= 'Z'){//dataにAからZが入ったら
val[k] = val[k] *16 + data -'A'+10;
}
else if(data >= '0' && data <= '9'){//data[i]に0から9が入ったら
val[k] = val[k] *16 + data[i] -'0';
}
}
}
/*printf("k=%d\n",k);
for(i=0;i<k;i++){
printf("出力 = %d\n",val[i]);
}
*/
//バブルソート//
for(i=0; i<k-1; i++)
{
if(val[i] < val[i+1])
{
}
else{
work = val[i];
val[i] = val[i+1];
val[i+1] = work;
}
}
for(i=0;i<k;i++)
{
printf("出力 = %d\n",val[i]);
}
}
教えて頂けますか?
Re: 教えて頂けますか?
バブルソートのコードなど調べればいくらでも出てくるので、
それを参考にすればいいんじゃないでしょうか?
それを参考にすればいいんじゃないでしょうか?