我有一个简单的程序来查找更多的两个数字并将它们存储在数组的第一行。
数组是arr [tot] [2]我希望将arr [tot] [0]中的每个元素与arr [tot] [1]中的元素进行比较,但它给我无效的数组赋值。 我应该使用哪种功能/方法来做到这一点?
for(i=0;i<tot;i++)
{
if(arr[i,1]>arr[i,0])
{
arr[i,0]=arr[i,1]}
}
完整计划
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
//Input
int tot = 23;
int arr[tot][2] = {
{9272992,-5268711},
{-6457223,-8368810},
{-3415057,-2776446},
{-6492757,-3453386},
{4313482,4783138},
{5573672,8360909},
{-2546018,2224083},
{1267093,4700254},
{6136723,9042717},
{1277125,2796189},
{-2062877,2036481},
{6089545,-6182241},
{-8795303,6074456},
{8152425,785931},
{-5134200,4319924},
{6820437,-5861208},
{9051213,-9636786},
{-4230018,-4363843},
{-2413233,-722776},
{2182770,-8099750},
{-5939638,-2243558},
{-9738840,1514344},
{9980524,1528253}
};
//the comparing
int i;
for(i=0;i<tot;i++)
{
if(arr[i,1]>arr[i,0])
{
arr[i,0]=arr[i,1]
}
}
for(i=0;i<tot;i++)
{
cout<<arr[i,0]<<" ";
}
return 0;
}
感谢您回答我的问题:) 还要感谢downvotes,这真的帮助我理解,这里只允许智能和高级问题,不欢迎愚蠢的错误和语法错误。
答案 0 :(得分:0)
@ songyuanyao的评论是正确的。如果要访问2D数组中的值,则需要使用arr[i][0]
。
您的代码有三个错误:
声明数组时,元素数必须是常量。因此int tot = 23;
应为const int tot = 23;
arr[i,0]
是一个有效的表达式,但不应在此处使用。您应该在整个程序中使用语法arr[i][0]
。
你错过了分号。
对#2的一些解释:错误&#34;无效的数组赋值&#34;是由于arr[i,0]=arr[i,1]
行(你在这里错过了;
)。在arr[i,0]
中,逗号是comma operator,它返回第二个操作数的值。所以arr[i,0]
相当于arr[0]
,这是一维数组。类似地,arr[i,1]
是arr[1]
,它也是一维数组。但是array is not a modifiable L-value,所以arr[i,0]=arr[i,1]
给出了#34;无效的数组赋值&#34;错误。这也解释了为什么arr[i,1]>arr[i,0]
没有给出编译时错误,但它是一个运行时错误。
答案 1 :(得分:-2)
请勿使用此语法
if(arr[i,1]>arr[i,0])
{
arr[i,0]=arr[i,1]
}
相反,请尝试使用:
if(arr[i][1]>arr[i][0])
{
arr[i][0]=arr[i][1]
}