Problema utilizzo if-else in un programma che crea un quiz

di il
2 risposte

Problema utilizzo if-else in un programma che crea un quiz

Salve, dovevo creare un programmino che ti pone 3 domande su un argomento a piacere a cui l'utente possa rispondere semplicemente V/F e che, a test concluso, mostrasse il punteggio ottenuto. Sono riuscito a scrivere un codice che funzionasse senza errori per la consegna precedente (anche grazie all'aiuto di un utente del forum), ma adesso dovrei aggiungere la seguente funzione: "Se l'utente risponde bene alla prima domanda, si presentano successivamente due domande differenti da quelle che si porrebbero se rispondesse male" ed il codice che ho scritto mi da svariati problemi... sapete aiutarmi?

(ecco il codice che ho scritto)
/*Realizzare un programma che presenti 3 domande sulla musica Rock a cui l'utente possa rispondere vero o falso (v\f).*/ 
/*Il punteggio iniziale è 0, ogni risposta esatta vale 1 punto, ogni risposta errata vale -1 punto. Al termine si visualizzi il punteggio ottenuto dall'utente.*/
/*Se l'utente risponde bene alla prima domanda, si presentano successivamente due domande differenti da quelle che si porrebbero se rispondesse male*/
//		counter = counter + 1;
#include <stdio.h>
#include "stdafx.h"

char risp1;
char risp2;
char risp2a;
char risp3;
char risp3a;
int counter = 0;

int main()
{
	printf("BENVENUTO AL NOSTRO QUIZ SULLA MUSICA ROCK E SOTTOGENERI!\n\n");
	
	//La risposta alla domanda n1. determinerà l'esecuzione di un ramo piuttosto che di un altro.
	//Radice del quiz.
	printf("Domanda n1. Kurt Cobain fu' lo storico leader dei Nirvana. (V\\F)  ");
	scanf_s("%c", &risp1);
	getchar();
	if (risp1 == 'v' or risp1 == 'V') 
		counter = counter + 1,
		printf("\nESATTO! Cobain fu' chitarrista e cantante dei Nirvana dal 1987 al 1994. (+1 punto)");
    else 
		counter = counter - 1,
		printf("\nRISPOSTA SBAGLIATA. Cobain fu' chitarrista e cantante dei Nirvana dal 1987 al 1994. (-1 punto)");

	//Ramo numero uno.
   {if (risp1 == 'v' or risp1 == 'V')
		printf("\n\n\nDomanda n2. Anthony Kiedis e' un chitarrista. (V\\F)  ");
	scanf_s("%c", &risp2a);
	getchar();
	if (risp2a == 'f' or risp2a == 'F')
		counter = counter + 1,
		printf("BRAVO! (+1 punto)");
	else
		counter = counter - 1,
		printf("SBAGLIATO. Anthony Kiedis e' un cantante, storico membro dei RHCP. (-1 punto)");


	if (risp1 == 'v' or risp1 == 'V')
		printf("\n\n\nDomanda n3. La ballad 'I Remember You' e' una canzone degli Skid Row. (V\\F)  ");
	scanf_s("%c", &risp3a);
	getchar();
	if (risp3a == 'v' or risp3a == 'V')
		counter = counter + 1,
		printf("RISPOSTA ESATTA! (+1 punto)");
	else
		counter = counter - 1,
		printf("ED INVECE E' VERO. (-1 punto)");

	printf("\n\n\n\nIl tuo punteggio finale e' di: %d punti.", counter);
	scanf_s("%d"); }

	//Ramo numero due.		
  {if (risp1 == 'f' or risp1 == 'F')
	   printf("\n\n\n\nDomanda n2. La celeberrima traccia 'Dazed and Confused' dei Led Zeppelin e' in realta' una cover. (V\\F)  ");
   scanf_s("%c", &risp2);
   getchar();
   if (risp2 == 'v' or risp2 == 'V')
	   counter = counter + 1,
	   printf("\nRISPOSTA ESATTA! e' una rielaborazione dell'omonimo brano di Jake Holmes. (+1 punto)");
   else
	   counter = counter - 1,
	   printf("\nRISPOSTA ERRATA. Dazed and Confused e' una rielaborazione dell'omonimo brano di Jake Holmes. (-1 punto)");

   if (risp1 == 'f' or risp1 == 'F')
	   printf("\n\n\n\nDomanda n3. Brian Patrick Carroll (meglio conosciuto come 'Buckethead') fu' il chitarrista con i quali i Guns 'N Roses registrarono il loro album di debutto 'Appetite for Destruction'. (V//F)  ");
   scanf_s("%c", &risp3);
   getchar();
   if (risp3 == 'f' or risp3 == 'F')
	   counter = counter + 1,
	   printf("\nRISPOSTA CORRETTA! Buckethead registro' con i Guns 'N Roses solo l'album 'Chinese Democracy', 'Appetite for Destruction' fu' registrato con lo storico chitarrista dei G'N'R, Slash. (+1 punto)");
   else
	   counter = counter - 1,
	   printf("\nRISPOSTA ERRATA. Buckethead registro' con i Guns 'N Roses solo l'album 'Chinese Democracy', 'Appetite for Destruction' fu' registrato con lo storico chitarrista dei G'N'R, Slash. (-1 punto)");

   printf("\n\n\n\nIl tuo punteggio finale e' di: %d punti.", counter);
   scanf_s("%d"); }


		

	return 0;
}

2 Risposte

  • Re: Problema utilizzo if-else in un programma che crea un quiz

    "Svariati problemi" ... ovvero?

    Come si aiuta se non si conoscono i problemi?
  • Re: Problema utilizzo if-else in un programma che crea un quiz

    Ovvero è come se i due rami if-else che vorrei creare non siano distinti e separati...
    se si risponde "V" alla prima domanda funziona correttamente tutta la parte dove ho segnato il commento //ramo numero uno. ma se una volta che il programma visualizza il punteggio si immette un'altro carattere non si ferma e stampa, per esempio, questo:

    Il tuo punteggio finale e' di: 3 punti.f

    RISPOSTA ERRATA. Dazed and Confused e' una rielaborazione dell'omonimo brano di Jake Holmes. (-1 punto)f

    RISPOSTA CORRETTA! Buckethead registro' con i Guns 'N Roses solo l'album 'Chinese Democracy', 'Appetite for Destruction' fu' registrato con lo storico chitarrista dei G'N'R, Slash. (+1 punto)



    Il tuo punteggio finale e' di: 3 punti.)

    In pratica stampa la risposta alle domande senza il printf della domanda stessa...



    se, invece, alla prima domanda si risponde 'F' il programma fa questo casino qua:

    BENVENUTO AL NOSTRO QUIZ SULLA MUSICA ROCK E SOTTOGENERI!

    Domanda n1. Kurt Cobain fu' lo storico leader dei Nirvana. (V\F) f

    RISPOSTA SBAGLIATA. Cobain fu' chitarrista e cantante dei Nirvana dal 1987 al 1994. (-1 punto)f
    BRAVO! (+1 punto)f
    ED INVECE E' VERO. (-1 punto)



    Il tuo punteggio finale e' di: -1 punti.f




    Domanda n2. La celeberrima traccia 'Dazed and Confused' dei Led Zeppelin e' in realta' una cover. (V\F)
    RISPOSTA ERRATA. Dazed and Confused e' una rielaborazione dell'omonimo brano di Jake Holmes. (-1 punto)



    Domanda n3. Brian Patrick Carroll (meglio conosciuto come 'Buckethead') fu' il chitarrista con i quali i Guns 'N Roses registrarono il loro album di debutto 'Appetite for Destruction'. (V//F) f

    RISPOSTA CORRETTA! Buckethead registro' con i Guns 'N Roses solo l'album 'Chinese Democracy', 'Appetite for Destruction' fu' registrato con lo storico chitarrista dei G'N'R, Slash. (+1 punto)



    Il tuo punteggio finale e' di: -1 punti.
Devi accedere o registrarti per scrivere nel forum
2 risposte