Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [C] Indovina il numero

  1. #1

    [C] Indovina il numero

    Salve,
    devo fare questo programma:
    Scrivere un programma per il gioco “indovina il numero”. Il programma sceglierà a caso un numero tra 1 e 1000 e chiederà all’utente di indovinarlo. Per ogni tentativo del giocatore il programma dovrà rispondere con “Troppo alto” o “Troppo basso” e dovra’ richiedere un nuovo numero fino a che il giocatore non indovini il numero scelto. Alla fine il programma dovrà dare in output il numero di tentativi del giocatore.

    Usando solo: If while for switch break continue funzioni
    Quindi niente puntatori ecc.
    Qualcuno sa farmi il codice al volo?
    Se poi è possibile anche il prog inverso, cioè:
    Scrivere un programma per il gioco “indovina il numero” in cui l’utente decide a caso un numero tra 1 e 1000 e chiederà al computer di indovinarlo. Per ogni tentativo del computer il giocatore dovrà rispondere con qualche valore (es. 1 2 2) corrispondenti a “Troppo alto” o “Troppo basso” e dovra’ richiedere un nuovo numero fino a che il computer non indovini il numero scelto. Alla fine il programma dovrà dare in output il numero di tentativi del computer.

    In alternativa la combinazione dei due:
    Combinare i due precedenti in un unico programma in cui l'utente e il computer si "sfidano"

    Ringrazio in anticipo chiunque mi possa fare i prog :*
    http://www.tuttoirc.it Il Portale IRC Italiano

  2. #2
    codice:
     
    #include <cstdio>
    #include <cstdlib>
    #include <ctime>
    
    #define MAX 1000 // numero maximo
    #define DBG 1 // per il debug su off mettilo a 0
    using namespace std;
    
    int main()
    {
    	static unsigned int * arr_n = (unsigned int *) malloc(sizeof(unsigned int) * MAX);
    	int i = 0;
    	for(; i < MAX; ++i)
    	{
    		arr_n[i] = i;
    	}
    	srand(time(NULL));
    	unsigned int number, number_rand;
    	do
    	{
    		puts("Inserisci un numero a caso: ");
    		scanf("%d",  &number);
    		number_rand = arr_n[rand() % MAX];
    		if(number == number_rand)
    		{
    			puts("Numero esatto :)");
    			if (DBG) { fprintf(stdout, "%d && %d\n", number, number_rand); }
    		}
    		else
    		{
    			puts("Numero sbagliato :(");
    			if (DBG) { fprintf(stdout, "%d && %d\n", number, number_rand); }
    		}
    	}while(1);
    	return 0;
    }
    E in C++ ma basta poco per renderlo in C...2/3 cosettine ;)

    Spero ti aiuti :D
    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

  3. #3
    Utente bannato
    Registrato dal
    Jan 2003
    Messaggi
    1,414
    Ecco qui

    codice:
    #include <stdio.h> 
    #include <time.h> 
    #include <math.h>
    
    main() 
    {
    
    int k, tent, counter;
    counter = 1;
    
    srand( (unsigned) time (NULL) ); 
    k = rand() % 1000;
    
    printf ("Indovina il numero compreso tra 1 e 1000\n");
    scanf ("%d", &tent);
    
    while ( tent != k ) {
      
           if ( tent < k ) 
           {
           printf ("Troppo basso! Riprova\n");
           scanf ("%d", &tent);
           ++counter;
           }
           
           else if ( tent > k ) 
           {
           printf ("Troppo alto! Riprova\n");
           scanf ("%d", &tent);
           ++counter;
           }
           
                         }  
           
    printf ("Bravo, il numero era %d\n" ,k );
    printf ("Hai indovinato in %d tentativi\n", counter);
    
    return 0;
    }
    Il computer "pensa" un numero da uno a mille, legge dallo scanf il tuo tentativo e ti dice se il numero che hai inserito è troppo alto o troppo basso, quando azzecchi il numero ti fa i complimenti e ti dice quanti tentativi hai usato

    Non l'ho commentato perchè non c'è nessun costrutto strano, ma se hai dubbi chiedi pure

  4. #4
    Originariamente inviato da maiosyet


    Il computer "pensa" un numero da uno a mille, legge dallo scanf il tuo tentativo e ti dice se il numero che hai inserito è troppo alto o troppo basso, quando azzecchi il numero ti fa i complimenti e ti dice quanti tentativi hai usato
    un po + evoluto del mio...io nn contavo i tentativi.....aggiungero sta feature
    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

  5. #5
    codice:
     
    // arr.cpp
    // 0.1.1 Added counter and fixed memory lack
    #include <cstdio>
    #include <cstdlib>
    #include <ctime>
    
    #define MAX 1000 // numero maximo
    #define DBG 1 // per il debug su off mettilo a 0
    using namespace std;
    
    int main()
    {
    	static unsigned int * arr_n = (unsigned int *) malloc(sizeof(unsigned int) * MAX);
    	int i = 0;
    	
    	for(; i < MAX; ++i)
    	{
    		arr_n[i] = i;
    	}
    	
    	srand(time(NULL));
    	
    	unsigned int number, number_rand, cnt = 0;
    	
    	do
    	{
    		puts("Inserisci un numero a caso: ");
    		
    		scanf("%d",  &number);
    		number_rand = arr_n[rand() % MAX];
    		
    		if(number == number_rand)
    		{
    			puts("Numero esatto :)");
    			if (DBG) { fprintf(stdout, "%d && %d\n", number, number_rand); }
    			break;
    		}
    		else
    		{
    			printf("Tentativo %d : Numero sbagliato :(\n", cnt);
    			if (DBG) { fprintf(stdout, "%d && %d\n", number, number_rand); }
    			++cnt;
    		}
    		
    	}while(1);
    	
    	free(arr_n);
    	
    	puts("Premi qualcosa per uscire");
    	char esc;
    	scanf("%c", &esc);
    	
    	return 0;
    }
    mia versione migliorata ;)
    La stupidità umana e l'universo sono infinite.
    Della seconda non sono certo(Einstein)

    Gnu/Linux User

  6. #6
    Qualche anno fa anche io avevo cercato di creare una versione di "Indovina il numero",eccone una:

    codice:
    /*
    *****************************************
    **** NOME: indovina il numero v.3.5 *****
    **** DATA: 21 Agosto 2002 ***************
    *****************************************
    Programma che genera due numeri casuali mediante la funzione "time" e riferisce
    se un numero digitato è maggiore o minore di uno dei due numeri(in sequenza ciclica).
    */
    #include <iostream.h>
    #include <iomanip.h>
    #include <stdlib.h>
    #include <time.h>
    #include<dos.h>
    
    int main(){
    
    
       int casuale,
           casuale2,
           numero=1001,
           numero2=1001,
    	   sentinella=1,
           sentinella2=1,
           minore,
           maggiore;
       char selezione='s',
    	nome[11],
    	nome2[11];
    
       cout <<"\n    -----------------------------";
       cout <<"\n    | INDOVINA IL NUMERO(v.3.5) |\n";
       cout   <<"    -----------------------------\n";
       while(selezione=='s'){
    	srand(time (0) *23);//generazione del seme
    	(casuale =(rand() % 1001)); //generazione del numero casuale
    	srand(time (0) );//generazione del secondo seme
    	(casuale2 =(rand() % 1001)); //generazione del secondo numero casuale
    	minore=0;
    	maggiore=1000;
    	cout <<"\n    E' stato generato un numero da 0 a 1000 per ogni giocatore. Indovinate!\n\n";
    	cout <<"    Nome primo giocatore: COMPUTER("<<casuale<<")\n";
    	cout <<"    Nome secondo giocatore: ";
    	cin >> nome2;
    	cout<<"\n";
    	while(numero!=casuale || numero2!=casuale2){
    		 if(numero!=casuale){
    	       cout <<"    Turno di COMPUTER("<<casuale<<") : ";
    	       numero=(minore+maggiore)/2;
    	       if(numero==minore)
    	       ++numero;
    	       if(numero==maggiore)
    	       --numero;
    	       cout <<numero;
    		       if(numero < casuale){
    		 minore=numero;
    			     cout<<"\n" << setw(2) <<sentinella <<") Troppo piccolo.\n\n";
    		       }
    		   if(numero > casuale){
    		 maggiore=numero;
    			 cout<<"\n" << setw(2) <<sentinella <<") Troppo grande.\n\n";
    		       }
    		       if(numero==casuale){
    			 sound(100);
    			 delay(100);
    			 nosound();
    			 cout<<"\n" << setw(2) <<sentinella <<") NUMERO INDOVINATO!\n\n";
    		       }
    	      ++sentinella;
    	     }
    	     if(numero2!=casuale2){
    		       cout <<"    Turno di " <<nome2<< " : ";
    	       cin >> numero2;
    	       if(numero2==-1){
    		 cout<<"    (il tuo numero e' "<<casuale2<<")\n";
    	       }
    		       if(numero2 < casuale2){
    			     cout<< setw(2) <<sentinella2 <<") Troppo piccolo.\n\n";
    		   }
    		       if(numero2 > casuale2){
    			     cout<< setw(2) <<sentinella2 <<") Troppo grande.\n\n";
    		       }
    		       if(numero2==casuale2){
    			     sound(100);
    			 delay(100);
    			 nosound();
    			     cout<< setw(2) <<sentinella2 <<") NUMERO INDOVINATO!\n\n";
    		       }
    	       ++sentinella2;
    	     }
    	}
    	if(sentinella > sentinella2){
    	      cout <<"    "<<nome2<<" vince con " <<sentinella2 -1 <<" tentativi.";
    	}
    	if(sentinella < sentinella2){
    	      cout <<"    COMPUTER vince con " <<sentinella -1 <<" tentativi.";
    	}
    	if(sentinella==sentinella2){
    	      cout <<"    Situazione di parita'.\n";
    	}
    	sentinella=1;
    	sentinella2=1;
            numero=1001;
            numero2=1001;
        	cout <<"\n    Vuoi rigiocare? s/n : ";
    	    cin >> selezione;
        	switch(selezione){
    	          case 's' :
    	              break;
    	          case 'n' :
    			  break;
    	          default :
    		             while(selezione!='s' && selezione!='n'){
    		                  cout <<"    Selezione non valida,ripetere: ";
    		                  cin >> selezione;
                         }
    		             break;
            }
       }
       return 0;
    }
    Si gioca contro il computer!

  7. #7
    L'ho scritto parecchio tempo fa,penso che possa essere migliorato di molto! Cosa ve ne pare?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.