0

配列の数値をソートするプログラムを作ってみました。

頑張ったのですが、こんな問題があります。ループして数値を入れ替えて並べても、配列を出力しても何も変わらず、配列は同じままです。

コードはすべてをより明確にします

これが主な機能です:

int main(){
int arr[10];
//For loop to get from user numbers to be put into the array
for ( int i = 0; i<10; i++){
    cout << "Enter the number to be recorded: ";
    cin >> arr[i];
    cout << endl;
}
// Set counter n to 0 ( counts numbes of number swaps)
int n = 0;
do {
    //re sets counter to 0
    n=0;

    //Check the entire loop if arr[i] bigger than arr[i+1] and swaps their values if true then adds 1 to n
    for ( int i = 0; i>9; i++){
        if(arr[i]>arr[i+1]){
            swap(&arr[i], &arr[i+1]);//swaps by sending the addresses of the two array elements the pointers in the swap function
            n++;
        }
    }
}while(n>0); // if counter = 0 then end (therefore the numbers are arranged correctly since no swapping happened)
cout << "The numbers ordered are:\n\n";
// Loop to output the arranged array
for (int i =0; i<10; i++){
    cout << arr[i] << ", ";
}
cout<<endl;
system("PAUSE");
return 0;}

これはスワップ関数です。

void swap ( int *p, int *t){
int temp;
temp = *p;
*p = *t;
*t = temp;}

ここで私の問題を解決し、このコードの何が問題なのか教えていただければ幸いです

皆さん、ありがとうございました

4

2 に答える 2

5

for ループをよく見てください...その内容は決して実行されません。

for ( int i = 0; i>9; i++){ ... }

状態i>9は ですi<9

于 2012-07-28T02:58:11.107 に答える
1
   for ( int i = 0; i>9; i++){
                    ^^^
                     here is your problem 

を初期化しi to the 0、条件をチェックすることは、 if i is greater than 9which が真ではない場合、 for ループ条件であるため、終了することです

そのはず

for( int i = 0; i<9; i++) than the 

結果

   i=0 condition i<9 true  { come in the function body}
   i=1 condition i<9 true  { come in the function body}
   .
   .
   .
   i=8 condition i<9 true  { come in the function body}
   i=9 condition i<9 false  { } 
于 2012-07-28T03:03:55.900 に答える