2015-09-23 28 views
0

我有這個計劃&的紅寶石version試圖做同樣的在C++中工作For循環不正常超過一個陣列中的C++

輸入必須是:

2 # Number of pairs 
562 -881 # First pair 
310 -385 # Second pair 

和輸出:

-319 
-75 

它工作正常,2個數字的數組,並打破如果對> 2.我的循環有什麼問題?

#include <iostream> 

using namespace std; 

int main() { 
    int sum = 0; 
    int iter; 

    cin >> iter; 
    int arr[2]; 

    for (int i=0; i<iter; i++) { 
     for (int n=0; n<2; n++) { 
      // Enter numbers 
      cin >> arr[n]; 
     } 
    } 

    for (int num=0; num<2; num++) { 
     sum+=arr[num]; 
    } 

    for (int i=0; i<iter; i++) { 
     // Get the sum of numbers 
     cout << sum << endl; 
    } 
    return 0; 
} 

感謝您的幫助!

+1

在你的第一個循環,你覆蓋的內容每次'arr'。 – juanchopanza

+0

它是如何修復的? – k1r8r0wn

回答

1
for (int i=0; i<iter; i++) { 
    for (int n=0; n<2; n++) { 
     // Enter numbers 
     cin >> arr[n]; 
    } 
} 

在第一次迭代中值arr被輸入,又在第二次迭代以前的值將被覆蓋(在接下來的迭代,如果任何類似)。這就是問題 。

Solution -

#include <iostream> 
using namespace std; 

int main() { 
    int iter; 
    cin >> iter; 
    int arr[2]; 
    int sum[iter];    // declare sum as array with iter number of elements 
    for(int i=0;i<iter;i++){ 
     sum[i]=0;     // initialize elements of sum to 0 
    } 
    for (int i=0; i<iter; i++) { 
     for (int n=0; n<2; n++) { 
     // Enter numbers 
      cin >> arr[n];    // take iput 
      sum[i]+=arr[n];    // add numbers and store in sum 
     } 
    } 


    for (int i=0; i<iter; i++) { 
     // Get the sum of numbers 
     cout << sum[i] << endl;   // print values in sum after taing all inputs 
    } 
    return 0; 
} 
+0

感謝觀看這個,但我究竟能夠修復它? – k1r8r0wn

+1

@kirbrown我已經添加了解決方案。請看一下。點擊鏈接查看工作演示。 – ameyCU

+0

是的,工作完美,謝謝你! – k1r8r0wn

1

在循環的每次迭代中,您正在覆蓋arr的內容。嘗試這樣的事情(live demo here):

#include <iostream> 

using namespace std; 

int main() { 
    int sum = 0; 
    int iter; 

    cin >> iter; 
    int arr[2]; 

    for (int i=0; i<iter; i++) { 
     for (int n=0; n<2; n++) { 
      // Enter numbers 
      cin >> arr[n]; 
     } 
     for (int num=0; num<2; num++) { 
      sum+=arr[num]; 
     } 

     cout << sum << endl; 

    } 

    return 0; 
} 
+0

謝謝,但是在這個變體中,輸出每次在每對之後顯示並且在第二次中斷時檢查:'2 - > 20 10 - > 30(ok) - > 30 40 - > 100' – k1r8r0wn