2016-06-20 7 views
0

入力した1つの数字に数字を並べ替えるコードを書く必要があります。例えば入力された数字の並べ替え - FORとWHILEの違い

:入力:4713239 出力:1233479

私は(33のような)は、繰り返しの数字を入力するとき、それは正常に動作しない私は、FORとして最後のループを持っている場合:

for(int j = 0; j < arr[i]; j++) // in this loop my output is: 123479. 

私はこのループをFORからWHILEに正しく変更します。 それは意味:

while(arr[i]) // and the number is sorted correctly (1233479) 

真は言われ、私はこのコードでは、これらの操作の違いがあるかわかりません。

FORループが正しく機能しないのはなぜですか?誰かが私にこのことを説明できますか?

私はコードを書いた:

int sort(int arg) 
{ 
    int var, score = 0; 
    int arr[10] = {0}; 


    for(int i = 0; i < 10; i++) 
    { 
     var = arg % 10; 
     arr[var]++; 
     arg = arg/10; 
    } 


    for(int i = 0; i < 10; i++) 
    { 
     for(int j = 0; j < arr[i]; j++) //while(arr[i]) --> works correctly 
    { 
     score = score * 10 + i; 
     arr[i]--; 
    } 
    } 
    return score; 
} 
+2

while(arg [i]!= 0) 'while(arg [i]!= 0)'と同等に評価され、したがってfor(...; j BeyelerStudios

+0

@BeyelerStudiosだから、その二重の数字がソートされない原因となるのはどこですか? – gryzek

答えて

1

あなたは両方のARRを修正[i]とjのためのループは、両方の比較の一部であるとき、速すぎて終了します。

関連する問題