2014-09-26 87 views
1

誰能告訴我爲什麼這不起作用?我試圖用while循環對五個整數進行排序,但輸出結果只給了我輸入的數字,而且輸入的順序是我輸入的順序。 我對編程非常陌生,我真的不知道我在做什麼。雖然構造來排序int [C++]

這裏是我的代碼:

#include <iostream> 
using namespace std; 

    int main() 
    { 
     int n1, n2, n3, n4, n5, temp, i; 

     cout << "Enter five numbers to be sorted: " <<'\n'; 
     cin >> n1 >> n2 >> n3 >> n4 >> n5; 

     while(i<4) { 
     i++; 
        if(n1>n2) { 
        temp = n1; 
        n1 = n2; 
        n2 = temp; 
        } 
        if(n2>n3) { 
        temp = n2; 
        n2 = n3; 
        n3 = temp; 
        } 
        if(n3>n4) { 
        temp = n3; 
        n3 = n4; 
        n4 = temp; 
        } 
        if(n4>n5) { 
        temp = n4; 
        n4 = n5; 
        n5 = temp; 
        } 
        } 
        cout << n1 << " " << n2 << " " << n3 << " " << n4 << " " << n5 << endl; 
        system("PAUSE"); 
        return(0); 
    } 
+0

謝謝你提供的信息豐富的答案,它現在可以工作。 – Gokurin 2014-09-26 00:44:27

回答

2

你永遠不會初始化i所以它會導致不確定的行爲測試i<4;可能這會導致循環永遠不會被輸入。

將環路更改爲for (int i = 0; i < 4; ++i)並取出i的早期定義。

當然,通過使用容器而不是具有五個單獨的int變量,排序邏輯可以得到很大改善!

+0

我會給你一票,但可悲的是我沒有聲望。 – Gokurin 2014-09-26 01:01:11

+0

@Gokurin希望你能接受答案(在答案旁邊打勾清楚的刻度線) – 2014-09-26 01:35:55

+0

@ Matt McNabb完成!對不起,我幾天沒有去。 – Gokurin 2014-09-29 14:05:15