如何检查数组中的所有值是否彼此相等.C++
how to check if all values in an array are equal to eachother. C++
我想问题是...它并不是说所有的总和都是相等的,即使它们是相等的。我知道,这是一些糟糕的编程。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;
}
}
在循环的最后一次迭代中,您正在比较arraySums[12]==arraySums[13]
.此数组仅包含 12 个值,编号从 0-11。
您的 for 循环应为:
for(int i=0; i<11; i++)
是的,那是 11。您只能在 12 个数据集之间进行 11 次比较,否则您将最后一个进行比较?
编辑:说allTrue
未初始化的答案已经丢失,所以我会在这里说出来。您必须初始化allTrue
bool allTrue = true;
标准算法可以吗?
如果是这样,您可以尝试计数或search_n。
计数版本:bool bAllTrue = (count(array[
0][0], array[5][0], array[0][0](,25(;search_n版本:bAllTrue = search_n(
相关文章:
- 在提升multi_index容器中,是否定义了"default index"?
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 检查输入是否不是整数或数字
- 是否可以初始化不可复制类型的成员变量(或基类)
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 此代码是否违反一个定义规则
- 是否需要删除包含对象的"pair"?
- 是否可以从int转换为enum类类型
- 无论条件是否为true,if总是在c++中执行
- 如何找到大小'x'数组是否完全填充,在C++?
- 检查值是否在集合p1和p2中,但不在p3中
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 检查 std::shared_ptr<> 的当前底层类型是否为 T
- 在c++中检查长方体是否尽可能快地重叠(无迭代)
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 子目录是否继承属性,例如add_definitions,include_directories和父Cmakelist.t
- 标准是否使用多余的大括号(例如 T{{{10}}})定义列表初始化?
- C/C++预处理器是否可以检测一些编译器选项
- 是否可以用"iostream"包装现有的TCP/OOpenSSL会话