#include <iostream>
int main(){
bool check;
int lenght=1,height=1;
int array[height][lenght];
std::cin>>height;
int a=0;
for(int i=1;i<=height;i++){
std::cin>>lenght;
for(int i=0;i<=lenght;i++)
std::cin>>array[a][i];
if (lenght%2==0){
int array1[height][lenght/2],array2[height][lenght/2];
for(int i=0;i<=lenght/2;i++)
array1[a][i]=array[a][i];
for(int i=0;i<=lenght/2;i++)
array2[a][i]=array[a][lenght-i-1];
for(int i=0;i<=lenght/2;i++)
if(array1[a][i]!=array2[a][i])
check= false;
a++;
check=true;
if(check==true)
std::cout<<"its rainbow array ! ";
else
std::cout<<"you cant get any unicorn :( ";
}
else{
int array1[height][lenght/2-1],array2[height][lenght/2-1];
for(int i=0;i<lenght/2-1;i++)
array1[a][i]=array[a][i];
for(int i=0;i<lenght/2-1;i++)
array2[a][i]=array[a][lenght-i-1];
for(int i=0;i<lenght/2-1;i++)
if(array1[a][i]!=array2[a][i])
check= false;
a++;
check=true;
if(check==true)
std::cout<<"its rainbow array ! ";
else
std::cout<<"you cant get any unicorn :( ";
}
}
}
抱歉英语不好。我正在尝试检查是否将数组分成一半,然后检查这些部分是否匹配。 例如= 1,2,3,4,5,6 ==&gt;这不是彩虹阵列 1,2,3,4,5,4,3,2,1 ==&GT;这是彩虹阵列。 这就是程序应该如何运作:
1 =用户输入一个整数,这将是我们的高度,告诉我们将测试多少个数字列表。 2 =用户输入整数第一个列表的整数。然后程序将从用户获取列表输入。 3 =程序应将主要列表分为2个次要列表。 4 =将主要列表的元素复制到2个次要列表的程序。
在最后阶段,它将2个列表与更改bool值进行比较,为true或false。但在我的情况下,它总是如此。这是我几个小时前写的工作代码。
#include <iostream>
bool checkarray(int *array,int lenght);
int main(){
int array[9]={1,2,3,4,5,4,3,2,4};
int lenght=9;
if(checkarray(array,lenght)==true)
std::cout<<"its rainbow array ! ";
else
std::cout<<"you cant get any unicorn :( ";
}
bool checkarray(int array[],int lenght){
if (lenght%2==0){
int array1[lenght/2],array2[lenght/2];
for(int i=0;i<=lenght/2;i++)
array1[i]=array[i];
for(int i=0;i<=lenght/2;i++)
array2[i]=array[lenght-i-1];
for(int i=0;i<=lenght/2;i++)
if(array1[i]!=array2[i])
return false;
return true;
}
else{
int array1[lenght/2-1],array2[lenght/2-1];
for(int i=0;i<lenght/2-1;i++)
array1[i]=array[i];
for(int i=0;i<lenght/2-1;i++)
array2[i]=array[lenght-i-1];
for(int i=0;i<lenght/2-1;i++)
if(array1[i]!=array2[i])
return false;
return true;
}
}
但每当我想要添加用户体验时,它就像第一个代码一样。请帮忙
答案 0 :(得分:2)
对于奇数长度数组,您应该使用长度/ 2而不是长度/ 2-1。如果长度是9然后长度/ 2-1 = 3,那么你只会检查第一个和最后3个元素而不是4个。实际上你甚至不需要在不同的分支中处理这两个案例。
bool checkarray(int array[],int length){
for(int i=0;i<length/2;i++)
if(array[i]!=array[length-1-i])
return false;
return true;
}