Hoe fout op te lossen: verwachte identifier of ‘(‘

Ik heb een probleem met iets dat ik programmeer.
Ik krijg deze foutmelding keer op keer;

[email protected] (~/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.

Ik heb het hele internet afgezocht maar kon het probleem niet vinden..
het verwijderen van de; nadat int main(void)niet hielp

Dit is mijn 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);
    }

Ik probeer dit probleem al een paar dagen op te lossen, maar ik kom er gewoon niet uit!

Bij voorbaat hartelijk dank!


Antwoord 1, autoriteit 100%

Je hebt een geneste lus met do/while. Zorg ervoor dat elke start met do eindigt op while.

Het lijkt erop dat aan het einde van het bestand de “while” niet correct is.

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

Het kan zijn dat u de afsluiting ‘}’ voor ‘while (rijen <= hoogte);’

mist

De juiste code kan zijn:

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);
}

Antwoord 2, autoriteit 90%

int main(void);

Je hebt zojuist de mainaangegeven. Je moet het definiëren en de code binnen die definitie toevoegen.

int main()
{
   .....
}

Antwoord 3, autoriteit 50%

Hoofdbericht is aangepast, dus duidelijk antwoord.

Al uw code bevindt zich buiten een functie omdat u int main(); je declareert een functie. Gebruik in plaats daarvan {} haakjes.

int main() {
    //Code here.
}

Antwoord 4, autoriteit 50%

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

Hier in uw bovenstaande verklaringen aEN bworden opnieuw gedeclareld meer dan eens het veroorzaken van compilatiefout.


Antwoord 5, Autoriteit 25%

Neem de laatste keer buiten de DOE-reikwijdte:

while (rows <= height);

Antwoord 6, Autoriteit 25%

Als u uw code niet inspringt, zou u (op alle middelen) moeten doen, minstens schrijf de start en de eindkrullende haakjes tegelijk wanneer u de lusverklaring schrijft, voordat u de lus-instructie schrijft Elke code in het lichaam van die lus (die tussen de krullende beugels gaat). Het zal je in de toekomst van problemen redden.


Antwoord 7

In geval van reageer het native project …. het is een eenvoudig probleem.

U kunt naar uw projectdoel gaan in iOS en Check Build, Version and Build Identifier … Mogelijk hebben ze extra ruimte aan het einde dat moet worden verwijderd

Ik hoop dat het helpt. Werkte voor mij


Antwoord 8

Het is omdat je een puntkomma hebt gemaakt na int main(void), ik ben er geweest.

//               v
// int main(void);
int main(void)

Other episodes