Question

I've got a problem with something I'm programming. I get this error over and over;

jharvard@appliance (~/Dropbox/pset1): make mario
clang -ggdb3 -O0 -std=c99 -Wall -Werror    mario.c  -lcs50 -lm -o mario
mario.c:23:5: error: expected identifier or '('
    do
    ^
mario.c:32:1: error: expected identifier or '('
do
^
2 errors generated.

I searched all over the internet but couldn't find the problem.. removing the ; after int main(void) didn't help

This is my code:

#include <stdio.h>
#include <cs50.h>
#include <math.h>

int main(void);

    //Ask User for Height, and check

    int a, b, rows, height;
    int a = 0;
    int b = 0;
    int rows = 1;   

    do
    { 
        printf ("Height: ");
        height = GetInt();
    }
    while (height <=0 || height > 23);   

    //build half pyramid

    do
    {
        do
        {
            printf("r");
            a++;
        }
        while (a < height - rows);

        do
        {
            printf("#");
            b++;
        }
        while (b < rows + 1);


        printf("\n");
        rows++;

        while (rows <= height);
    }

I've been trying to solve this problem for a few days, but i just can't figure it out!

Thank you so much in advance!

Was it helpful?

Solution 2

You got nested loop with do/while. Make sure that each start with do end with while.

Look like at the end of file, the "while" is not correct.

printf("\n");
rows++;

while (rows <= height);
}

That could be you missing the close '}' before 'while (rows <= height);'

Correct code could be:

int main(void)
{

    //Ask User for Height, and check

    int a, b, rows, height;
    a = 0;                    // <- removed int
    b = 0;                    // <- removed int
    rows = 1;                 // <- removed int

    do
    { 
        printf ("Height: ");
        height = GetInt();
    }
    while (height <=0 || height > 23);   

    //build half pyramid

    do
    {
        do
        {
            printf("r");
            a++;
        }
        while (a < height - rows);

        do
        {
            printf("#");
            b++;
        }
        while (b < rows + 1);


        printf("\n");
        rows++;
    }                             // <- add }
    while (rows <= height);
}

OTHER TIPS

int main(void);

You have just declared the main. You need to define it and add the code inside that definition.

int main()
{
   .....
}

Main post is edited, so clear answer.

All your code is outside of a function because you're doing int main(); you're declaring a function. Use {} brackets instead.

int main() {
    //Code here.
}
int a, b, rows, height;
int a = 0;
int b = 0;

Here in your above statements a and b are re-declared more than once causing compilation error.

Take the last while outside of the do scope:

while (rows <= height);

If you don't indent your code, which you (by all means) should do, at least write the starting and the ending curly brackets at once when you write the loop statement, before putting any code into that loop's body (which goes between the curly brackets). It will save you from troubles like these in the future.

In case of react native project .... its a simple issue.

You can go to you project target in ios and check Build, version and build identifier... they might have extra space on the end which should be removed

Hope it helps. Worked for me

It's because you made a semicolon after int main(void), I've been there.

//               v
// int main(void);
int main(void)
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top