2014-04-21 29 views
-1

我正在嘗試爲a和b輸入整數,然後將這些整數放在一起。例如,對於a輸入1 2 3 4,對於b輸入4 3 2 1將產生:1 2 3 4 4 3 2 1.我不明白爲什麼我的程序不打印這個。每當我輸入-1時,什麼都不會發生。我在程序運行時做了錯誤的過程嗎?幫助表示讚賞。追加矢量。結果將不會打印

#include <iostream> 
#include <vector> 

using namespace std; 

vector<int> append(vector<int> a, vector<int> b) 

{ 
    int n = a.size(); 
    int m = b.size(); 

    vector<int> c(n + m); 

    int i; 

    for (i = 0; i < n; i++) 
     c[i] = a[i]; 

    for (i = 0; i < m; i++) 
     c[n + i] = b[i]; 

    return c; 

} 
main() 
{ 
    vector<int>a, b, c; 
    int temp; 

    cin >> temp; 
    while (temp != -1) { 
     a.push_back(temp); 
     cin >> temp; 
} 

    cin >> temp; 
    while (!cin.eof()) { 
     b.push_back(temp); 
     cin >> temp; 
} 

    c = append(a, b); 
    for (int i = 0; i < c.size(); i++) 
     cout << c[i] << " "; 
    cout << endl; 

} 
+0

參數閱讀中的第二個while循環似乎是錯誤的。 – UldisK

+0

我在做什麼是輸入任何整數,如「23432」和按回車。然後輸入另一個整數,例如「64364」並按回車。然後我輸入-1。我認爲這會打印出「2343264364」。它只是打印一個空白。 – user3555941

+0

即使不必要地複製輸入向量,您的追加功能也能正常工作。您應該縮小問題範圍並刪除不相關的代碼。如果您在執行許多不同操作的代碼時遇到問題,請將其分解爲單個責任部分,然後依次測試每個部分。 – juanchopanza

回答

1

你有兩個循環,一個輸入矢量a,另一個輸入b。 擊中-1會僅終止第一個循環。第二個是由您尚未輸入的eof終止。因此,請輸入eof(特定於您的系統)或讓第二個循環終止於-1(在這種情況下,您需要再次輸入-1)。

0

你說

每當我輸入-1,什麼都不會發生。

這是因爲您在那時達到了第二個cin >> temp聲明(就在while.eof()循環之前)。那時你開始輸入b矢量的值。通過在流中輸入EOF字符(在Windows上按Ctrl + Z,在Linux上按CTRL + D)結束該循環。