C++ 有人能找出我做错了什么吗?
这是我对一个问题的解决方案,我试着解决它,直到我能得到最多的编译器错误,但是对于这个错误,我不确定它告诉了我什么C++ 有人能找出我做错了什么吗?,c++,C++,这是我对一个问题的解决方案,我试着解决它,直到我能得到最多的编译器错误,但是对于这个错误,我不确定它告诉了我什么 #include <iostream> using namespace std; #define MAX 99 #define totaltriangle(w) ((1+(w-2))*(w/2)+w) #define totaldiamond(w) ((2+(w-2)+(w/2))*(w/2)+w) char triangle[totaltriangle(M
#include <iostream>
using namespace std;
#define MAX 99
#define totaltriangle(w) ((1+(w-2))*(w/2)+w)
#define totaldiamond(w) ((2+(w-2)+(w/2))*(w/2)+w)
char triangle[totaltriangle(MAX)+MAX]; // array for the results
char diamond[totaldiamond(MAX)+MAX];
int main(void) {
int width;
do{ // Get the diamond width
cout << "Diamond width: +;"
cin >> width;
cout << "Width = " << width << endl;
} while(width<1 || width>MAX || (width%2)==0);
// triangle
int tottri = totaltriangle(width)+width-1;
for(int i=0; i<tottri; i++){
triangle[i] = '+';
}
for(int i=1; i<=width/2; i++){
int sq = i*i;
triangle[sq+i-1] = triangle[tottri-sq-i] = '\n';
}
triangle[tottri] = 0;
cout << triangle <<endl;
// diamond
int tot = totaldiamond(width)+width-1;
int l=0;
for(int i=0; i<tot/2; l++, i++){
for(int j=0; j<width/2-l; i++, j++){
diamond[i] = ' ';
diamond[tot-i-2*(l+1)] = ' ';
}
diamond[tot-i-2*(l+1)] = '\n';
for(int j=0; j<2*l+1; i++, j++){
diamond[i] = '+';
diamond[tot-i-1-l+width/2] = '+';
}
diamond[i] = '\n';
}
diamond[tot] = 0;
cout << diamond << endl;
return 0;
}
根据您自己的错误消息,该行:
cout << "Diamond width: +;"
// ^ no
我提到的更正是在cin
之前立即进行的。我没有查看代码的其余部分,但是如果您有其他问题,则错误消息是您需要理解的,因此我将尝试为您细分
函数“int main()”中的行/main.cpp:
告诉您问题在main.cpp
文件的main
函数中
行/main.cpp:16:2:错误:应为“;”在'cin'之前,
告诉您编译器正在“查看”第16行第2列,它指向cin>>宽度的开头代码>最后提到的部分
这很简单。读取错误是否值得<代码>应为“;”在“cin”之前
谢谢,我现在明白了,但是在我更正代码之后,它现在说⇒ 检查输出⇒ 您的标准输出与以前不同expected@programmerihop:你是如何调试它的?@programmerihop:再说一遍,你是如何调试它的?告诉我它说的话用处不大。此外,通常不赞成链接到外部站点或提供带有错误消息的图像。如果你真的需要的话,更新你原来的帖子,并明确地标记它。
cout << "Diamond width: +;"
// ^ no
cout << "Diamond width: +";
// ^ yes
./main.cpp: In function ‘int main()’:
./main.cpp:16:2: error: expected ‘;’ before ‘cin’
cin >> width;
^