如何检查数组中的所有值是不是彼此相等。 C++

Posted

技术标签:

【中文标题】如何检查数组中的所有值是不是彼此相等。 C++【英文标题】:how to check if all values in an array are equal to eachother. C++如何检查数组中的所有值是否彼此相等。 C++ 【发布时间】:2012-05-02 03:11:10 【问题描述】:

我想问题是......它并不是说所有的总和都是相等的,即使它们是相等的。 我知道,这是一些糟糕的编程。 xD 我会在我的问题旁边打几颗星。

感谢您的帮助。

#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;



【问题讨论】:

C++: Fastest method to check if all array elements are equal 的可能重复项或为什么此代码不起作用。 【参考方案1】:

在循环的最后一次迭代中,您正在比较 arraySums[12]==arraySums[13]。这个数组只有 12 个值,编号从 0 到 11。

你的 for 循环应该是

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

是的,就是 11。你只能在 12 个数据集之间进行 11 次比较,否则你将最后一个与什么进行比较?

编辑:allTrue 未初始化的答案已经丢失​​,所以我会在这里说出来。你必须初始化allTrue

bool allTrue = true;

【讨论】:

【参考方案2】:

标准算法可以吗?

如果是这样,你可以试试count,或者search_n。

计数版本: bool bAllTrue = (count(array[0][0], array[5][0], array[0][0]),25);

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

【讨论】:

以上是关于如何检查数组中的所有值是不是彼此相等。 C++的主要内容,如果未能解决你的问题,请参考以下文章

如何检查数组中的数字是不是相等?

检查数组的所有值是不是相等

Ruby:检查数组中所有对象的属性是不是相等

如何检查 Lua 中的两个值是不是原始相等?

在 C++ 中检查向量的所有元素是不是相等

检查数组中所有元素是不是相等的最快方法