Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [C] Indovina il numero!

    Salve ragazzi , sono nuova del forum, e già per altri esercizi di programmazione i vostri aiuti e commenti ad altri utenti sono stati preziosi!

    Sto avendo problemi con una parte del programma "Indovina il numero!".

    Non ho incontrato difficoltà nello scrivere il programma in sè, ma non so proprio come far ripartire il gioco..
    Questo è il mio programma, aspetto il vostro aiuto!

    codice:
    #include<stdio.h>
    #include<stdlib.h>
    
    
    void indovina(int n, int guess); 
    
    
    int main(){
    
    
        int guess = 0;
        int n = 0;
    
    
        n = 1 + rand() % 1000;
        
        printf("I have a number between 1 and 1000.\nCan you guess my number?\nEnter your first guess: ");
        scanf("%d", &guess);
    
    
        indovina(n, guess);
    
    
    
    
    return 0;
    }
    
    
    void indovina(int n, int guess){
    
    
        char yon = 0;
    
    
        while(guess != n){
    
    
            if( guess <= n ){ 
    
    
                printf("Too low. Try again: ");
                scanf("%d", &guess);
                }
    
    
            else {
    
    
                printf("Too high. Try again: ");
                scanf("%d", &guess);
                }
    
    
        }/*fine while*/
    
    
        if( n == guess){
    
    
            printf("Excellent! You guessed the number!\nWould you like to play again(y or n)?");
            scanf("%c", &yon);
    
    
            /*COME FACCIO A FAR RIPARTIRE IL GIOCO?*/
        }
    }

  2. #2
    Inserisci tutto il tuo codice in un do { /*Tuocodice*/ } while(/*utente vuole continuare*/);

    codice:
    main() {
    bool continua;
    
    do {
    ...
    } while(continua);
    
    return 0;
    }
    Experience is what you get when you don’t get what you want

  3. #3
    Sì, lo so che mi genererà sempre lo stesso numero ahah, ma per ora il mio problema è far ripartire il gioco!
    Aggiungere srand non mi sarà tanto difficile :P

  4. #4
    Mh, cosa sarebbe quel "
    codice:
    bool continua;
    " ?

    Ho un altro problema in realtà, non mi da' la scanf dopo aver visualizzato il messaggio di vincita.

  5. #5
    un flag di controllo...
    Experience is what you get when you don’t get what you want

  6. #6
    Ma io sto programmando in C.. E cercando su internet il "bool" si usa in C++..

  7. #7
    Scusami, orario pranzo...

    Guarda qui:
    codice:
    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    
    
    int indovina(int n); 
    
    
    int main(){
        int n = 0;
        srand(time(NULL));
    
    
        do {
            n = 1 + rand() % 1000; 
        } while(indovina(n));
    
    
        return 0;
    }
    
    
    int indovina(int n){
        char yon = 0;
        int guess = 0;
        
        printf("I have a number between 1 and 1000.\nCan you guess my number?\nEnter your first guess: ");
        scanf("%d%*c", &guess);
        
        while(guess != n){
            if( guess <= n ){ 
                printf("Too low. Try again: ");
            } else {
                printf("Too high. Try again: ");
            }
            scanf("%d&*c", &guess);
        }/*fine while*/
    
    
        printf("Excellent! You guessed the number!\nWould you like to play again(y or n)?");
        scanf("%c", &yon);
        if(yon == 'y') {
            return 1;
        } else {
            return 0;
        }
    }
    La funzione indovina ora contiene tutta la logica di gioco e restituisce se l'utente vuole (o meno) continuare a giocare.
    Quando leggi un intero con scanf è buona norma buttare via lo \n con la direttiva di formattazione %*c...
    Vedi se funziona perché non l'ho provato.
    Ultima modifica di Xaratroom; 18-03-2015 a 14:44
    Experience is what you get when you don’t get what you want

  8. #8
    Penso che nell'ultimo if sia yon invece di c

    Adesso lo provo!

  9. #9
    Funziona!

    Adesso me lo "studio" per bene, perché il tuo è molto più ordinato! ahah

    Grazie mille!

  10. #10
    Comunque quella funzione è poco elegante.... per renderla poco poco migliore andrebbe spostato il "messaggio di game over" nel main e sarebbe bello se la funzione restituisse lo score (ovvero il numero di tentativi)
    Experience is what you get when you don’t get what you want

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.