任何人都能弄清楚我做错了什么吗?

时间:2015-11-09 01:04:21

标签: 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(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; 
^

1 个答案:

答案 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’部分的开头。

这非常简单。