Indovina il numero

di il
8 risposte

Indovina il numero

Non riesco a capire qual'è l'errore che segnala il compilatore, qualcuno potrebbe darmi l'illuminazione
#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int main (void){
	
	int x;
	int tentativi;
	int y;
	int vite;
	
	printf("ciao pippetta benvenuta nel gioco -indovina il numero-");
	
	
	srand( time(NULL));
	
	y=rand()%5+1;
	
	
		
		printf("\nsecondo te che numero sto pensando?Ricorda che hai solo 20 tentativi. Poi muori\n");
		
		for(tentativi=1; tentativi<=20;tentativi++){
			
			scanf("%d" ,&x);
			
			if(x != y){
				vite=20 - tentativi; 
            printt("hai solo %d tentativi ");			
			if(x > y){
				printf(" il numero che hai inserito e' troppo grande. Riprova pippeta");
			}
			if(x < y ){
				printf(" il numero che hai inserito e' troppo piccolo. Riprova pippetta");
			}
			
			printf("hai già tentato %d volte ", tentativi); 
	        else{
				printf (" complimenti hai indovinato! " );		
		}
		
	}
	
	
	
}	
	return 0;
	
}
	 
		
il compilatore mi segna come errore il seguente ( che credo dovrebbe essere un errore di punteggiatura )

---------------------------------------
mediaf.c:48:2: error: expected identifier or ‘(’ before ‘return’
return 0;
^
mediaf.c:50:1: error: expected identifier or ‘(’ before ‘}’ token
--------------------------------------

grazie mille

8 Risposte

  • Re: Indovina il numero

    L'ultimo else non è associabile ad alcuna if! E controlla le parentesi graffe!
  • Re: Indovina il numero

    In primo luogo grazie per la correzione

    Allora, credo di aver ricorretto le parentesi. Tuttavia mi genera sempre il 5
    come mai O.o?

    riposto il codice
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    
    int main (void){
       
       int x;
       int tentativi;
       int y;
       int vite;
       
       printf("ciao pippetta benvenuta nel gioco -indovina il numero-");
       
       
       srand( time(NULL));
       
       y=rand()%5+1;
       
       
          
          printf("\nsecondo te che numero sto pensando?Ricorda che hai solo 20 tentativi. Poi muori\n");
          
          for(tentativi=1; tentativi<=20;tentativi++){
             
             scanf("%d" ,&x);
             
             if(x != y){
                vite=20 - tentativi; 
                printf("hai solo %d tentativi ", vite);         
             if(x > y)
                printf(" il numero che hai inserito e' troppo grande. Riprova pippeta");
             
             if(x < y )
                printf(" il numero che hai inserito e' troppo piccolo. Riprova pippetta");
             
             
             printf("hai già tentato %d volte ", tentativi); 
              
                   
          }
          else
          printf(" complimenti, hai indovinato!");
       }
       
       return 0;
       
    }
  • Re: Indovina il numero

    Sei sicuro che ti "estragga" sempre 5?
    Hai provato a vedere il valore con un debugger o con una printf, dopo la chiamata a rand()?
    y=rand()%5+1;
    printf("\n%d\n", y);
  • Re: Indovina il numero

    Eh hai ragione, non sapevo si potesse visualizzare . Però che cavolo, mi ha generato 3 5 di fila un minimo di problema me lo sono posto. comunque il programma funziona grazie mille per l'aiuto !
  • Re: Indovina il numero

    ?9?
  • Re: Indovina il numero

    Considerazione:

    le risposte di 20 domande che hanno come risposta vero/falso, possono essere rappresentate come un numero di 20 bit.

    Ora, 2^20 e' 1048576, quindi con 20 bit si possono generare tutti i numeri compresi tra 0 e 1048575.

    Perche' limitarsi ai numero 1,2,3,4,5?

    Per questi numeri (1..5), quale e' il numero massimo di domande che si devono utilizzare?
  • Re: Indovina il numero

    No dai migliorabili il gioco è fantastico,hai 20 tentativi per indovinare un numero da 1 a 5, e se non hai fortuna di azzeccarlo al primo colpo ciao ciao vita.....

    Io darei i primi 3 tentativi senza perder vita,in un range minimo da 1 a 10.
    Strutturerei meglio il ciclo,e il gioco continua fintanto che ho vite.Alla fine visualizzo quanti numeri ho vinto.
  • Re: Indovina il numero

    Io sarei piu propenso a una cosa simile a questa:
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    #define LIFE 10
    #define MISS 2
    #define RANGE 10
    
    int main (void)
    {
       int vite = LIFE;
       int ncasuale;
       int nmio;
       int vittorie = 0;
       int ontry;
    
       srand( time(NULL));
    
       printf("ciao pippetta benvenuta nel gioco -indovina il numero-\n\n");
    
       while (vite)
       {
            printf("Level %d, range 1 to %d\n",vittorie,RANGE + vittorie);
            ncasuale = rand() % RANGE + vittorie + 1;
            ontry = MISS;
            while (vite)
            {
                printf("Find number:");
                scanf("%d" ,&nmio);
                if (nmio == ncasuale)
                {
                    ++vittorie;
                    printf("WINNER\n\n");
                    break;
                }
    
                if (nmio < ncasuale)
                    printf("%d < ?\n",nmio);
                else
                    printf("%d > ?\n",nmio);
    
                if (ontry == 0)
                {
                    --vite;
                    printf("life:%d\n",vite);
                }
                else
                {
                    --ontry;
                }
            }
       }
    
       printf("\n\n\tSCORE:%d\n",vittorie);
    
       return 0;
    
    }
    
Devi accedere o registrarti per scrivere nel forum
8 risposte