Errore expected `;' before ')' token

di il
2 risposte

Errore expected `;' before ')' token

Salve, sto da poco imparando il C++ e sono alle prese con un programma semplice di per sé. Ci sono i commenti, quindi, eccolo:
//Impariamo le Tabelline, 5 tentativi se sbaglia e finchè l'utente non digita "termina"

#include <iostream>
#include <cmath>
#include <cstdlib>
#include <time.h>
#include <conio.h>
#include <windows.h>
#include <stdio.h>
#include <math.h>

using namespace std;

int a,b,risultato,input,giusto,i;
char termina[8];



int main ()
           {
                        
              a=rand()%10+1;              //Inizializza a(valore casuale da 1 a 10)
              b=rand()%10+1;              //Inizializza b(valore casuale da 1 a 10)                        
              cout<<a<<"*"<<b<<endl;              //Stampa di a e b
              risultato=a*b;              //Inizializza risultato              
              
              
              
              while(risultato>0)              //Finché il risultato non è maggiore di 0 (è opzionale, posso anche toglierlo)
              {
               for(i=0,i>=5,i++)              //Operatore d'incremento i; i inizializzato a 0. Si ripete finché i non è >=5; si incrementa la i(i++);
               {                  
                cin>>input;              //Immetti l'input, che sarebbe la tua risposta
                if(input==risultato)     //Se hai ingarrato la risposta
                {              
                 giusto=rand()%5+1;              //giusto puo' avere 4 valori
                  switch(giusto)  
                  {
                   case 1:              //caso 1
                   cout<<"Bravo \n";
                   break; 
                   case 2:              //caso 2  
                   cout<<"Ottima risposta \n";
                   break;
                   case 3:              //caso 3
                   cout<<"Continua cosi' \n";
                   break;
                   case 4:              //caso 4
                   cout<<"Stai nettamente migliorando \n";
                   break;
                  }              //Chiusura switch
                 Sleep(2000);              //attesa di 2s                     
                 cout<<"Scrivi termina per terminare \n";
                 cin>>termina;
                  while(strcmp (termina,"termina")==0);              //ripeti l'immissione di termina finché termina non è uguale alla scritta "termina"
                  { 
                   cin>>termina;
                   return 1;
                  }  //Chiusura while  
                }    //Chiusura if
                
                else              //Altrimenti se input non è uguale al risultato
                {
                 cin>>input; i++;              //Riscrivi l'input
                 if(input==risultato)              //E se questa volta hai ingarrato, dai la risposta di congratulazioni e in fine termina, come sopra
                 {              
                  giusto=rand()%5+1;
                  switch(giusto)  
                  {
                   case 1:              //caso 1
                   cout<<"Bravo \n";
                   break; 
                   case 2:              //caso 2  
                   cout<<"Ottima risposta \n";
                   break;
                   case 3:              //caso 3
                   cout<<"Continua cosi' \n";
                   break;
                   case 4:              //caso 4
                   cout<<"Stai nettamente migliorando \n";
                   break;
                  } //Chiusura switch
                  Sleep(2000);              //Attesa di 2s                     
                  cout<<"Scrivi termina per terminare \n";
                  cin>>termina;
                  while(strcmp (termina,"termina")==0);              //ripeti l'immissione di termina finché termina non è uguale alla scritta "termina"
                   { 
                    cin>>termina;
                    return 1; 
                   } //Chiusura while 
                 } //Chiusura if
               } //Chiusura for
              } //Chiusura conetenitore while
              
           system("pause");
           return 0;
           }


Ora, alla compilazione mi da questi errori:
Compilatore: Default compiler
Esecuzione di g++.exe...
g++.exe "C:\...\tabelline.cpp" -o "C:\Users\Luigi\Desktop\esercizi c++\5giugno\tabelline.exe" -g3 -I"C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include" -I"C:\Dev-Cpp\include\c++\3.4.2\backward" -I"C:\Dev-Cpp\include\c++\3.4.2\mingw32" -I"C:\Dev-Cpp\include\c++\3.4.2" -I"C:\Dev-Cpp\include" -L"C:\Dev-Cpp\lib" -g3
C:\Users\...\tabelline.cpp: In function `int main()':
C:\Users\...\tabelline.cpp:31: error: expected `;' before ')' token

C:\Users\...\tabelline.cpp:85: error: expected primary-expression before '}' token
C:\Users\...\5giugno\tabelline.cpp:85: error: expected `;' before '}' token
C:\Users\...\tabelline.cpp:85: error: expected primary-expression before '}' token
C:\Users\...\tabelline.cpp:85: error: expected `)' before '}' token
C:\Users\...\tabelline.cpp:85: error: expected primary-expression before '}' token
C:\Users\...\tabelline.cpp:85: error: expected `;' before '}' token

Esecuzione terminata
Premetto che uso DEV C++ come compilatore, e sono su SO Windows 7 Ultimate, numero seriale: ti piacerebbe xD

Potreste aiutarmi? Ora vado a presentarmi

P.S: ho appena rieditato il codice, mi sono acorto che c'erano delle graffe di troppo e che avevo inserito dopo i case degli switch, i punto e virgola invece dei due punti, ma da comunque gli stessi errori. Il primo errore lo da sul for...poi sul return 0 e in seguito alla riga di chiusura dell' int main (la parentesi graffa). Help plz

2 Risposte

  • Re: Errore expected `;' before ')' token

    Se non indenti bene il codice, non capirai più nulla dei vari blocchi.

    I problemi sono 3

    1) manca la chiusura dell'else
    } //Chiusura while
    } //Chiusura if
    } // Chiusura else
    } //Chiusura for

    2) nella for devi usare i ; e non la ,

    for(i=0;i>=5;i++)

    (fra l'altro, scritta in questo modo, questa for non verrà eseguita)

    3) nelle while non va messo il ; alla fine

    while(strcmp (termina,"termina")==0)
  • Re: Errore expected `;' before ')' token

    Si grazie mille, me l'ha detto anche il mio prof.

    Eccolo sistemato:
    //Impariamo le Tabelline, 5 tentativi se sbaglia e finchè l'utente non digita "termina"
    
    #include <iostream>
    #include <cmath>
    #include <cstdlib>
    #include <time.h>
    #include <conio.h>
    #include <windows.h>
    #include <stdio.h>
    #include <math.h>
    
    using namespace std;
    
    int a,b,risultato,input,giusto,tentativo;
    char termina[3];
    
    
    
    int main ()
               {
    
    
                do
                {   srand (time(0)); 
                    system("cls");
                    a=rand()%10+1;              //Inizializza a(valore casuale da 1 a 10)
                    b=rand()%10+1;                //Inizializza b(valore casuale da 1 a 10)            
                                           
                    cout<<a<<"*"<<b<<"=";               //Stampa di a e b
                  risultato=a*b;              //Inizializza risultato                 
                       
                       
                    tentativo=0;
                    cin>>input;
                    while((tentativo<4)&&(risultato!=input))  
                    {       tentativo++; 
                            cout<<"Hai sbagliato, ritenta\n";  
                            cout<<a<<"*"<<b<<"=";               
                            cin>>input;              //Immetti l'input, che sarebbe la tua risposta          
                            }       
                               
                     if(tentativo>=4)
                     cout<<"Hai esaurito i tuoi tentativi, imparati le tabelline\n";
                     
                     else
                     {
                     
                               
                               srand (time(0));
                                giusto=rand()%5+1;              //giusto puo' avere 4 valori
                                switch(giusto)  
                                     {
                       case 1:              //caso 1
                       cout<<"Bravo \n";
                       break; 
                       case 2:              //caso 2  
                       cout<<"Ottima risposta \n";
                       break;
                       case 3:              //caso 3
                       cout<<"Continua cosi' \n";
                       break;
                       case 4:              //caso 4
                       cout<<"Stai nettamente migliorando \n";
                       break;
                      }              //Chiusura switch
                        
                     Sleep(2000);              //attesa di 2s                     
                        //Chiusura while  
                    }    //Chiusura if
                  
                  
                  
                    
                
                       cout<<"Vuoi terminare?\n";               
                       cin>>termina;
                       
                    } 
                    while(strcmp (termina,"no")==0); 
                    
                 system("pause");
                 return 0;
               } //Chiusura main
    
Devi accedere o registrarti per scrivere nel forum
2 risposte