2012-05-02 166 views
1

我想問題是......它並不是說所有的總和都是平等的,儘管它們是一樣的。 我知道,這是一些糟糕的編程。 xD我會在我的問題旁邊放一些星星。如何檢查數組中的所有值是否相等。 C++

謝謝你的幫助。

#include <iostream> 

using namespace std; 


//function that passes a variable through and checks and sees if that variable has been used before. 
    bool checkArray(int pass[5][5], int toCheck) 
    { 
     bool check = false; 
     for(int i = 0; i < 5; i++) 
     { 
      for(int j = 0; j < 5; j++) 
      { 
       if(pass[i][j] == toCheck) 
       { 
        check = true; 
       } 
      } 
     } 
    return check; 
    } 



int main(){ 
bool allTrue; 
int array[5][5] = {0}; 
int num; 
int count=0; 
int arraySums[12]; 

    for(int i = 0; i < 5; i++) 
     { 
     for(int j = 0; j < 5; j++) 
      { 
      do // do while executes when number is 1-25, and a number has not been found when run through the function to check if it is found in the array. 
       { 
       cout << "Please enter a number that will go in slot (" << i + 1 << ")(" << j + 1 << "): "; 
       cin >> num; 
       } 
      while(((num < 1) || (num > 25)) || (checkArray(array, num) == true)); 

      array[i][j] = num; 
     } 
    } 

//populate the arraySums Array. 
//for(int i=0; i<2) 




    for(int i = 0; i < 5; i++) // prints out array 
    { 
     for(int j = 0; j < 5; j++) 
     { 
      cout << " | " << array[i][j] << " "; 
     } 
    cout << endl; 
    count++; 
    } 

//for horizontal sums 
arraySums[0]=array[0][0] + array[0][1] + array[0][2] + array[0][3] + array[0][4]; 
arraySums[1]=array[1][0] + array[1][1] + array[1][2] + array[1][3] + array[1][4]; 
arraySums[2]=array[2][0] + array[2][1] + array[2][2] + array[2][3] + array[2][4]; 
arraySums[3]=array[3][0] + array[3][1] + array[3][2] + array[3][3] + array[3][4]; 
arraySums[4]=array[4][0] + array[4][1] + array[4][2] + array[4][3] + array[4][4]; 

//for vertical sums 
arraySums[5]=array[0][0] + array[1][0] + array[2][0] + array[3][0] + array[4][0]; 
arraySums[6]=array[0][1] + array[1][1] + array[2][1] + array[3][1] + array[4][1]; 
arraySums[7]=array[0][2] + array[1][2] + array[2][2] + array[3][2] + array[4][2]; 
arraySums[8]=array[0][3] + array[1][3] + array[2][3] + array[3][3] + array[4][3]; 
arraySums[9]=array[0][4] + array[1][4] + array[2][4] + array[3][4] + array[4][4]; 

//for diagonal sums 
arraySums[10]=array[0][0] + array[1][1] + array[2][2] + array[3][3] + array[4][4]; 
arraySums[11]=array[0][4] + array[1][3] + array[2][2] + array[3][1] + array[4][0]; 

//to display horizontal sums 
int count2=0; 
for(int i = 0; i<5; i++) 
{ 
    cout << "Horizontal sum for row: " << count2+1 << " is " << arraySums[i] << endl; 
    count2++; 
} 

//to display the vertical sums. 
count2=0; 
for(int i = 5; i<10; i++) 
{ 
    cout << "Vertical sum for row: " << count2+1 << " is " << arraySums[i] << endl; 
    count2++; 
} 


//to display both diagonal sums 
cout << "The diagonal sum from left to right is: " << arraySums[10] << endl; 
cout << "The diagonal sum from right to left is: " << arraySums[11] << endl; 

    //************************************************************************************************************* 
for(int i=0; i<13; i++) 
{ 
    if(!(arraySums[i]==arraySums[i+1])) 
    { 
     allTrue=false; 
     break; 
    } 

} 


if(allTrue==true) 
{ 
    cout<< "All the values are equal to each other." << endl; 
} 

} 
+0

[C++:檢查所有數組元素是否相等]的最快方法可能的重複(http://stackoverflow.com/questions/14120346/c-fastest-method-to-check-if-all-array-elements - 是 - 平等)或爲什麼不是這個代碼工作。 –

回答

0

在您比較arraySums[12]==arraySums[13]。這陣只公頃12個值循環的最後一次迭代,從0-11編號。

您的循環應該讀

for(int i=0; i<11; i++) 

是的,這是11只能讓12個數據集之間11個比較,否則你在比較的最後一個?

編輯:答案說,allTrue未初始化失蹤,所以我會在這裏說。你必須初始化allTrue

bool allTrue = true; 
+0

你這麼聰明:DDD –

0

標準算法好嗎?

如果是這樣,您可以嘗試計數,或search_n。 (數組[0],數組[5] [0],數組[0],[0]),25);

search_n版本: bAllTrue = search_n(&陣列[0] [0],&陣列[5] [0],陣列[0] [0],25);

相關問題