Fatto indovina il numero-- chiedo commenti e consigli

di Anonimizzato17067 il
11 risposte
Questo è il mio prodotto : indovina il numero
chiedo consigli e commenti (belli e brutti) su come vi sembra il codice , i nomi delle variabili ,ecc...
insomma commentate in base alla vostra esperienza.
Grazie


----------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int differenza(int a,int b);
void confronta(int numUtente, int numComputer, int Differenza);

int main(){

int num1 ;
srand(time(NULL));
int indovina = rand()%100;

printf("inserisci un numero compreso fra 1 e 100\n");
scanf("%d",&num1);

int quantoIndovini = differenza(num1,indovina);


confronta(num1,indovina,quantoIndovini);


printf("prova ancore , inserisci un altro numero\n");
scanf("%d",&num1);

quantoIndovini = differenza(num1,indovina);
confronta(num1,indovina,quantoIndovini);
printf("prova ancore , inserisci un altro numero\n");
scanf("%d",&num1);
quantoIndovini = differenza(num1,indovina);
confronta(num1,indovina,quantoIndovini);

return 0;
}

int differenza(int a, int b){
if(a<b){
return b - a;
}
return a - b;
}

void confronta(int numUtente, int numComputer,int Differenza){

int num1 = numUtente;
int indovina = numComputer;
int quantoIndovini = Differenza;

printf("numero inserito :%d , numero da indovinare = %d, quanto siamo vicini %d .\n",num1,indovina,quantoIndovini);

if(num1 == indovina){
printf("congratuazioni hai vinto\n");

}
else if (num1 > indovina && (quantoIndovini > 1 && quantoIndovini <20)){
printf("Low Low, try again\n");
}
else if (num1 < indovina && (quantoIndovini > 1 && quantoIndovini <20))
printf("Low Low , try again\n");
else if (num1 > indovina){
printf("High , try again\n");
}
else {
printf("High, try again\n");
}

}

11 Risposte

  • Cominciamo col dire che se non usi i tag CODE del forum, il codice non si può neanche leggere ...
  • Ho letto le regole infatti ho selezionato la funzione code,
    il risultato ottenuto è:

    ----------------------------------------------------------------------------------------------------
    come si può notare dal messaggio precedente.
    Devo farci un po la mano,ma per caso va inserito tra i due code ??
    Grazie
  • Sì, inserisci il codice tra i due code ... usa l'anteprima se necessario ...
  • #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int differenza(int a,int b);
    void confronta(int numUtente, int numComputer, int Differenza);
    
    int main(){
    
    int num1 ;
    srand(time(NULL));
    int indovina = rand()%100;
    
    printf("inserisci un numero compreso fra 1 e 100\n");
    scanf("%d",&num1);
    
    int quantoIndovini = differenza(num1,indovina);
    
    
    confronta(num1,indovina,quantoIndovini);
    
    
    printf("prova ancore , inserisci un altro numero\n");
    scanf("%d",&num1);// inserire un numero intero
    
    //richiama la funzione differenza
    quantoIndovini = differenza(num1,indovina);
    
    confronta(num1,indovina,quantoIndovini);
    
    printf("prova ancore , inserisci un altro numero\n");
    scanf("%d",&num1);//inserire un numerointero
    
    quantoIndovini = differenza(num1,indovina);
    
    confronta(num1,indovina,quantoIndovini);
    
    return 0;
    }
    //calcola la differenza tra il numero inserito e il numero da indovinare
    int differenza(int a, int b){
    if(a<b){
    return b - a;
    }
    return a - b;
    }
    
    //funzione per eseguire il confronto fra numero inserito e numero da indovinare
    void confronta(int numUtente, int numComputer,int Differenza){
    
    int num1 = numUtente;
    int indovina = numComputer;
    int quantoIndovini = Differenza;
    
    //serve per verificare il funzionamentodel programma
    printf("numero inserito :%d , numero da indovinare = %d, quanto siamo vicini %d .\n",num1,indovina,quantoIndovini);
    
    if(num1 == indovina){
    printf("congratuazioni hai vinto\n");
    
    }
    //verifica il range da 1 a 100 in più se il range è tra 1 e 20
    else if (num1 > indovina && (quantoIndovini > 1 && quantoIndovini <20)){
    printf("Low Low, try again\n");
    }
    else if (num1 < indovina && (quantoIndovini > 1 && quantoIndovini <20))
    printf("Low Low , try again\n");
    //verifica il range solo tra 1e 100
    else if (num1 > indovina){
    printf("High , try again\n");
    }
    else {
    printf("High, try again\n");
    }
    
    }
    
  • Anche un minimo di indentazione non guasterebbe!
    In generale, almeno io quando scrivo codice preferisco utilizzare termini inglesi.
    Quella funzione differenza con l'if può essere sostituita da un semplice abs(a-b), il tuo output è in parte in italiano in parte in inglese il che fa strano.
    Nella funzione confronta mi sembra inutile copiare i tre parametri in nuove variabili (dai nomi meno esplicativi dei primi) se poi non devi farci nulla.
    E poi quella cosa del quantoindovini < 20 sinceramente non l'ho capita.
  • Questa

    int indovina = rand()%100;

    non restituisce un numero tra 1 e 100 ma tra 0 e 99

    E che senso ha ripetere per tre volte lo stesso blocco di istruzioni ??
  • Hai perfettamente ragione e solo che ieri ho publicato la bozza.
    Quello che vedi qui sotto è quello ufficiale.
    mentre per i nomi dei identificatori devo migliorare.
    Dimenticavo il quantoindovini >1 AND quantoindovini <20 serve per indicare che ti sei molto avvicinato al numero inserito.

    Grazie per i consigli.


    
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int differenza(int a,int b);
    void confronta(int numUtente, int numComputer, int Differenza);
    
    int main(){
    
    	int num1 ;
    	srand(time(NULL));
        int indovina = rand()%100;
    
        printf(" enter a number between 1 and 100");
         scanf("%d",&num1);
    
        int quantoIndovini = differenza(num1,indovina);
    
    
        confronta(num1,indovina,quantoIndovini);
    
    
        printf("try again, enter another number\n");
        scanf("%d",&num1);
    
        quantoIndovini = differenza(num1,indovina);
        confronta(num1,indovina,quantoIndovini);
        printf("try again, enter another number\n");
        scanf("%d",&num1);
        quantoIndovini = differenza(num1,indovina);
        confronta(num1,indovina,quantoIndovini);
    
    	return 0;
    }
    //indca di quanto l'utente si è avvicinato al numero da indovinare
    int differenza(int a, int b){
        if(a<b){
    	return b - a;
        }
        return a - b;
    }
    
    void confronta(int numUtente, int numComputer,int Differenza){
    
    
    
    	printf("numero inserito :%d  , numero da indovinare = %d, quanto siamo vicini %d .\n",numUtente,numComputer,Differenza);
    
    	 if(numUtente == numComputer){
    	    printf("Congratulations you have won\n");
    
    	    }
    	    else if (numUtente > numComputer && (Differenza > 1 && Differenza <20)){
    	    printf("Low Low, try again\n");
    	    }
    	    else if (numUtente < numComputer && (Differenza > 1 && Differenza <20))
    	     printf("Low Low , try again\n");
    	    else if (numUtente > numComputer){
    	    	printf("High , try again\n");
    	    }
    	    else {
    	    printf("High, try again\n");
    	    }
    
    }
    
    
  • Non hai letto quello che ti ho indicato io ...

    1) rand sbagliata

    2) perché 3 volte lo stesso codice???
  • Rand sbagliato si = 1+(rand () %100)
    ripetuto più volte il codice per simulare i tre tentativi,
    in modo più leggero.
    Cosa ne pensi???

    Grazie
  • Penso che esistono le for ... non si ripete il codice copiandolo ...
  • Penso anch'io .
    Ho ricevuto il messaggio .
    Grazie mille
Devi accedere o registrarti per scrivere nel forum
11 risposte