Consenso all'uso dei cookies

SITO1 -- SITO2 -- Forum2 -- CercaGlobale -- Informativa su Cookie e Privacy

Questo Forum1 è in sola lettura -- Usa il Forum2


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
[RISOLTO] Programma per giocare a 7.5 in C
#1
Buonasera, stavo facendo il programma per giocare a 7.5 (Sette e mezzo) in C.
Ho creato una sorgente che funziona senza problemi, o quasi. infatti quando il programma viene eseguito, viene chiesto all'utente: "Vuoi una carta?" e l'utente deve rispondere se si o no. Se dice si il programma prosegue, se dice no il programma si ferma, o almeno dovrebbe. Infatti il ciclo successivo alla domanda, non riconosce "si" o "no" immessi dall'utente.
Non so se capite: vi metto la sorgente:
Codice:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

int main (void) {
    int a,controllo, risposta, d, e;
    float carta, b, limite, c, cartapc, f, testutente, testpc;
    
/*azzeramento delle variabili*/
carta=a=b=limite=c=controllo=cartapc=f=e=d=testutente=testpc=0;

    printf("Vuoi una carta? \n");
    scanf("%d",& risposta);
    while (risposta != "no"){
        srand(time(NULL));
        a= 1+ rand()%9; /*carta pescata*/
        if (a>=8){
            c=0.5; /*dichiarazione del valore della carta pescata nel caso sia una figura*/
            printf("Hai pescato una carta di valore 0.5 \n");    
            carta=carta+c;
            }    
        else {    
            
            /*dichiarazione del valore della carta pescata nel caso sia un numero*/
            printf("Hai pescato una carta di valore %d \n",a);
            carta= carta+a;
            }
            
        if (carta>7.5){
            printf("Hai sballato \n");
            risposta = "no";
            }    
        
        if (carta <7.5){
            printf("Hai fatto %.1f \nVuoi un altra carta? \n",carta);
            scanf("%d",& risposta);
            }    
        
    }        /*gioca il banco*/
        while (cartapc <=7.5){
            srand(time(NULL));
            e= 1+ rand()%9;
            if (e>=8) {
                d=0.5;
                cartapc=d+cartapc;    
            }    
            else
                cartapc= cartapc+e;
        }
        /*confronto tra lei e il banco (PC)*/
        printf("\n========================= \n");
        printf("=Confronto dei risultati= \n");
        printf("========================= \n\n");
        printf("Hai totalizzato un punteggio di   %.1f punti\n",carta);
        printf("Il banco ha totalizzato un punteggio di   %.1f punti\n",cartapc);
        
        /*chi ha vinto?*/
        
        testutente=carta-7.5;
        
        if (testutente < 0)
        testutente= testutente*(4-5);
        
        testpc= cartapc-7.5;
        
        if (testpc <0)
        testpc= testpc*(4-5);
        
        if (carta <7.5 && cartapc < 7.5){
            if ( testutente < testpc )
                printf("Hai vinto!\n");
            if ( testutente = testpc )
                printf("Ha vinto il banco\n");
            if  ( testutente > testpc )
                printf("Ha vinto il banco\n");    
        }
        
        if (carta > 7.5 && cartapc > 7.5){
            printf("Ha vinto il banco");    
        }        
        
        if (carta > 7.5 && cartapc < 7.5){
            printf("Ha vinto il banco");    
        }    
        
        if (carta < 7.5 && cartapc > 7.5){
            printf("Hai vinto!\n");
        }
        
        return 0;
    
}
Non fate caso alle variabili di troppo... devo ancora finire.
comunque la condizione per cui viene eseguite il ciclo non riconosce il testo in generale. Come devo fare? grazie.
Nicoseven Sfascio tutto
_________________________________
Notebook sony vaio VPCEH6N3E intel core i5
Ubuntu 12.04.1 64 bit
Cita messaggio
#2
per si e no usa caratteri char, non float; per esempio 's'=SI e qualunque carattere diverso da 's' significa no. La prossima volta allega il file e impara a commentare il listato, non si capisce assolutamente nulla su cosa significano le variabili e cosa fanno
Il mio blog: http://zerozerocent.blogspot.it/
Legge di Murphy: SE QUALCOSA PUO' ANDAR MALE, LO FARA'
Cita messaggio
#3
(26-03-2013, 20:35 )BAT Ha scritto: per si e no usa caratteri char, non float; per esempio 's'=SI e qualunque carattere diverso da 's' significa no. La prossima volta allega il file e impara a commentare il listato, non si capisce assolutamente nulla su cosa significano le variabili e cosa fanno

Hai ragione. Provo con char. Ma si lo devo mettere tra ""? cioè "si"? o devo metterlo tra '? cioè così: 'si'?
Nicoseven Sfascio tutto
_________________________________
Notebook sony vaio VPCEH6N3E intel core i5
Ubuntu 12.04.1 64 bit
Cita messaggio
#4
(26-03-2013, 21:04 )Nicoseven Ha scritto: Ma si lo devo mettere tra ""? cioè "si"? o devo metterlo tra '? cioè così: 'si'?
i caratteri vanno tra apici (apostrofi); non devi leggere una stringa devi leggere un solo carattere

Codice:
printf("\nVuoi un altra carta? (s=SI, altro carattere=NO\n",carta);
che sta a significare che se l'utente inserisce la S e preme INVIO gli dai un'altra carta, se inserisce un carattere diverso da S non gliela dai

già che ci sei accetta sia le S maiuscole che minuscole; per farla breve devi avere una variabile carattere per la risposta, qualcosa come

Codice:
char risp; /* per la risposta */
...
printf("\nVuoi un altra carta? (s=SI, altro carattere=NO\n");
scanf ("%c",&risp); /* memorizza la risposta */
if(risp=='s' || risp=='S') { /* se legge la s maiuscola o minuscola è SI*/
.../* codice per gestire il SI */
}
Il mio blog: http://zerozerocent.blogspot.it/
Legge di Murphy: SE QUALCOSA PUO' ANDAR MALE, LO FARA'
Cita messaggio
#5
(26-03-2013, 22:35 )BAT Ha scritto:
(26-03-2013, 21:04 )Nicoseven Ha scritto: Ma si lo devo mettere tra ""? cioè "si"? o devo metterlo tra '? cioè così: 'si'?
i caratteri vanno tra apici (apostrofi); non devi leggere una stringa devi leggere un solo carattere

Codice:
printf("\nVuoi un altra carta? (s=SI, altro carattere=NO\n",carta);
che sta a significare che se l'utente inserisce la S e preme INVIO gli dai un'altra carta, se inserisce un carattere diverso da S non gliela dai

già che ci sei accetta sia le S maiuscole che minuscole; per farla breve devi avere una variabile carattere per la risposta, qualcosa come

Codice:
char risp; /* per la risposta */
...
printf("\nVuoi un altra carta? (s=SI, altro carattere=NO\n");
scanf ("%c",&risp); /* memorizza la risposta */
if(risp=='s' || risp=='S') { /* se legge la s maiuscola o minuscola è SI*/
.../* codice per gestire il SI */
}

Ottimo funziona! +
Nicoseven Sfascio tutto
_________________________________
Notebook sony vaio VPCEH6N3E intel core i5
Ubuntu 12.04.1 64 bit
Cita messaggio


Vai al forum:


Utenti che stanno guardando questa discussione: 1 Ospite(i)