这是我解决问题的方法,我尝试解决它,直到我能够获得弹性数量的编译器错误,但是对于这个错误,我不确定它告诉我什么
#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;
}
我一直试图弄清楚这个问题有多长时间,但我现在只是一个初学者所以我现在对这意味着什么一无所知。谢谢您的帮助。这是我得到的编译器错误消息。
./main.cpp: In function ‘int main()’:
./main.cpp:16:2: error: expected ‘;’ before ‘cin’
cin >> width;
^
答案 0 :(得分:2)
根据您自己的错误消息,行:
// Create new threads
for (x = 0; x < 20; x++)
{
*input = x % 4;
pthread_create (&(threads[x]), NULL, function, (void *) input);
}
// Wait for the threads to finish
for (x = 0; x < 20; x++)
{
pthread_join (threads[x], NULL);
}
应该是:
cout << "Diamond width: +;"
// ^ no
再次查看您的错误消息:
cout << "Diamond width: +";
// ^ yes
我提到的更正是在./main.cpp: In function ‘int main()’:
./main.cpp:16:2: error: expected ‘;’ before ‘cin’
cin >> width;
^
之前做出的。我没有查看你的其余代码,但如果你有其他问题,那么你需要了解错误信息,所以我会尝试为你分解。
cin
行告诉您问题出在./main.cpp: In function ‘int main()’:
文件的main.cpp
函数中。
行main
告诉你编译器正在“查看”第16行第2列,它指向最后提到的./main.cpp:16:2: error: expected ‘;’ before ‘cin’
部分的开头。
这非常简单。