[英]What are the problems in the following code?
第23行(预期“'””在“ {”令牌之前)和第37行(无法将赋值转换为“ int”)中出现错误,我该如何解决这些问题? (该程序的功能是通过使用N根棒(必须使用每根棒)来查找可以制作多少个三角形)。
#include <iostream>
using namespace std;
int a,b,c,db=0,n, i, j, k;
bool already = false;
int main()
{
cout << "n = ";
cin >> n;
int myarray[n][n][n];
for(a = 1; a < n; a++){
for(b = 1; b < n; b++){
for(c = 1; c < n; c++){
if(a+b>c && a+c>b && c+b>a && a+b+c==n){
while(!already){
for(i = 0; i < n; i++){
for(j = 0; j < n; j++){
for(k = 0; k < n; k++){
if(myarray[i][j][k] == {{a},{b},{c}} || myarray[i][j][k] == {{a},{c},{b}} || myarray[i][j][k] == {{b},{a},{c}} || myarray[i][j][k] == {{b},{c},{a}} || myarray[i][j][k] == {{c},{a},{b}} || myarray[i][j][k] == {{c},{b},{a}}){
already = true;
cout <<myarray[i][j][k];
break;
}
}
}
}
}
if(already == false){
cout << "db's actual value: " << db << endl;
cout << "A= " << a << " B= " << b << " C= " << c << endl;
}
myarray[i][j][k] = {{a}, {b}, {c}};
already = false;
}
}
}
}
cout << db <<" triangles could be made. " <<endl;
cin.get();
}
在Ubuntu上从g ++ g++ -std=c++11 wierd.cpp
出此输出,如下g++ -std=c++11 wierd.cpp
:
wierd.cpp: In function ‘int main()’:
wierd.cpp:23:60: error: expected primary-expression before ‘{’ token
if(myarray[i][j][k] == {{a},{b},{c}} || myarray[i][j][k] == {{a},{c},{b}} || myarray[i][j][k] == {{b},{a},{c}} || myarray[i][j][k] == {{b},{c},
^
您的问题在于,您正在比较使用初始化程序。 即使在C ++ 11中,我也不认为这是合法的。 另外,您正在将myarray[i][j][k]
与不合法的二维数组进行比较。
wierd.cpp:23:60: error: expected ‘)’ before ‘{’ token
wierd.cpp:37:34: error: cannot convert ‘<brace-enclosed initializer list>’ to ‘int’ in assignment
myarray[i][j][k] = {{a}, {b}, {c}};
这里的问题是,您正在尝试将二维数组(或更确切地说是其初始值设定项)分配给int
类型的变量。 myarray[i][j][k]
实际上是myarray
int
类型的元素。
请注意,这在同一行上也是非法的:
myarray = {{a}, {b}, {c}};
它是从初始化列表中分配给数组的。
从您发布的代码和错误中,我不知道您知道什么是myarray
。
myarray
的类型为int[][][]
,这意味着它是一个包含int的二维数组的数组,即int[][]
,因此在每个位置上您都会拥有一个数组。 因此,对于任何有效的a和b: myarray[a][b]
包含int的一维数组,即int[]
。 因此,对于任何有效的a和b以及c: myarray[a][b][c]
包含单个int值。
您的代码也没有解释您要做什么。 因此,我的回答仅说明了错误所在。 也许一个单独的问题会帮助您实现目标。
编辑
您的数组初始化器是二维的,而不是三维的。 正确的初始值设定项应为{{{a}},{{b}},{{c}}}
,这将导致数组中包含三个整数,并且仅包含这些整数。
myarray[0][0][0] == a
myarray[1][0][0] == b
myarray[2][0][0] == c
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.