Semplice programma C non da l'esito sperato

di il
3 risposte

Semplice programma C non da l'esito sperato

Buonasera ragazzi, mi sto avvicinando alla programmazione adesso perciò sto iniziando dalle basi e stavo provando a fare un programma in cui data una parola l'utente dovrà indovinare, in 10 turni, il massimo numero di lettere e in base a quante lettere l'utente avrà indovinato il programma stamperà poi un messaggio diverso. Credo di aver fatto tutto bene però nel conto finale delle lettere indovinate non mi trovo…forse perchè mi conta quelle ripetute due volte?

Vi posto il codice:

#include <stdio.h>

int main(void){

	//Dichiarazione variabile
	char parola[]={'b','e','n','v','e','n','u','t','o'};//Parola segreta
	char lettera;//Lettera da inserire
	int c_lettere=0;//contatore lettere trovate
	int inserim=0;//turni

	printf("BENVENUTO IN QUESTO SEMPLICE GIOCO:\n");
	printf("PROVA AD INDOVINARE LE LETTERE CHE COMPONGONO LA PAROLA!!\n");
	printf("INIZIAMO!\n");

	do{
	printf("Inserisci una lettera e vediamo se si trova nella parola:");
	fflush(stdout);
	scanf(" %c",&lettera);//Input lettera
	inserim=inserim+1;

	for(int i=0;i<9;i++){
		if(parola[i] == lettera){
		  c_lettere = c_lettere+1;
		}
	}
    }
	while(inserim<10);


        if(c_lettere>7){
        	printf("Sei fortissimo!!\n");
        	printf("Hai indovinato %d parole",c_lettere);
        }
	    else
	       if(c_lettere==7){
			printf("Hai vinto!!");
			printf("Hai indovinato %d parole",c_lettere);
		}
		else
		   if(c_lettere>4 && c_lettere<7){
			printf("Congratulazioni!!!");
			printf("Hai indovinato %d parole",c_lettere);
		}
		else
			if(c_lettere>=1 && c_lettere<4){
			  printf("Andrà meglio la prossima volta!");
			  printf("Hai indovinato %d parole",c_lettere);
		}
		else
			if(c_lettere==0){
					printf("Ritenta!Sarai più fortunato!");
					printf("Hai indovinato %d parole",c_lettere);
			}
		return 0;
}

3 Risposte

  • Re: Semplice programma C non da l'esito sperato

    Ovviamente il ciclo conterà le lettere quindi, ad esempio la e, sarà contata 2 volte

    Ma mi sembra un comportamento corretto

  • Re: Semplice programma C non da l'esito sperato

    13/11/2024 - oregon ha scritto:


    Ovviamente il ciclo conterà le lettere quindi, ad esempio la e, sarà contata 2 volte

    Ma mi sembra un comportamento corretto

    Però se io lo eseguo e provo questo:

    BENVENUTO IN QUESTO SEMPLICE GIOCO:
    PROVA AD INDOVINARE LE LETTERE CHE COMPONGONO LA PAROLA!!
    INIZIAMO!
    Inserisci una lettera e vediamo se si trova nella parola:b
    Inserisci una lettera e vediamo se si trova nella parola:e
    Inserisci una lettera e vediamo se si trova nella parola:m
    Inserisci una lettera e vediamo se si trova nella parola:p
    Inserisci una lettera e vediamo se si trova nella parola:q
    Inserisci una lettera e vediamo se si trova nella parola:a
    Inserisci una lettera e vediamo se si trova nella parola:s
    Inserisci una lettera e vediamo se si trova nella parola:d
    Inserisci una lettera e vediamo se si trova nella parola:t
    Inserisci una lettera e vediamo se si trova nella parola:o
    Congratulazioni!!!Hai indovinato 5 parole

    non dovrebbe darmi come risultato 4 lettere(b,e,t,o)che sono effettivamente presenti nella parola ‘Benvenuto’?

  • Re: Semplice programma C non da l'esito sperato

    Intanto la frase finale è sbagliata perchè indovini le lettere non le parole.

     Quindi

    Hai indovinato 5 lettere

    Poi dipende dalle regole del gioco che vuoi fare. In effetti sono 5 lettere della parola anche se una lettera è ripetuta. Se non vuoi contare le ripetizioni il codice deve essere cambiato leggermente interrompendo la for se il carattere viene trovato.Sai come si fa?  

Devi accedere o registrarti per scrivere nel forum
3 risposte