2012-10-28 38 views
0

我有一個如下的數組(如[2] [10]大小):計算數組中的每個連續整數求和

5 | 13 | 12 | 2 | 7 | 12 | 3 | 1 | 4 | 5
1 | 10 | 5 | 1 | 14 | 6 | 4 | 1 | 7 | 2
4 | 9 | 17 | 5 | 6 | 2 | 7 | 21 | 8 | 1

用戶將輸入一個數字,代碼將計算連續數字的總和,它將返回起始行和列。

例如:輸入= 48,並返回行= 1,列= 1個
輸入= 36,並返回行= 2,列= 6

我的示例代碼僅返回 「已完成」,而不是排= 0 ,列= 1。怎麼了?

int sum; 
int column; 
int row; 
bool situ = false; 
int number = 12; 
int puzzle[] = { (4,6,5,1,2), (3,5,6,7,8) }; 

for(int i=0; i<2; i++) 
{ 
    sum = 0; 
    for(int j=0; j<6; j++) 
    { 
     sum = 0; 
     for(int k=j; k<6; k++) 
     { 
      sum += puzzle[j]; 
      if(number == sum && !situ) 
      { 
       row = i; 
       column = k; 
       cout << "row = " << i << endl; 
       cout << "column = " << j << endl; 

      } 
      if(!situ) 
       break; 
     } 
     if(!situ) 
      break; 
    } 
    if(!situ) 
     break; 
} 
cout << "finished"; 
+0

是否允許在數組中使用負值? – osgx

+0

@osgx對不起,我忘了補充,不允許這樣做 – Mustafa

+0

變量原地在做什麼?我在這裏沒有看到任何一點 - 它從來沒有寫過...... – MoRe

回答

2

if(!situ) 
    break; 

語句是一個問題。您將situ初始化爲false並且永不改變它。因此,你總是在第一次循環之後休息。

0
#include<iostream> 

using namespace std; 
int main() 
{ 
int sum; 
int column; 
int row; 
bool situ = false; 
int number = 12; 
int puzzle[2][10] = { {4,6,5,1,2}, {3,5,6,7,8} }; 

for(int i=0; i<2; i++) 
{ 
    sum = 0; 
    for(int j=0; j<5; j++) 
    { 
     sum = 0; 
     for(int k=j; k<5; k++) 
     { 
      sum += puzzle[i][k]; 
      if(number == sum && !situ) 
      { 
       row = i; 
       column = k; 
       cout << "row = " << i << endl; 
       cout << "column = " << j << endl; 

      } 
    //  if(!situ) 
    //   break; 
     } 
//  if(!situ) 
//   break; 
    } 
// if(!situ) 
//  break; 
} 

cout << "finished"; 
}enter code here