[SWITCH] - problema istruzione default

di il
3 risposte

[SWITCH] - problema istruzione default

Salve a tutti, come da titolo ho un problema con l'istruzione default di una funzione switch all'interno di un esercizio. Questo mi chiede di acquisire una votazione tra A, B o C e di contare gli inserimenti di queste votazioni fino all'inserimento di un carattere di escape e a quel punto mostrare a video il resoconto dei valori inseriti. Ecco il codice che ho scritto :
#include <stdio.h>

int main()
{
	int voto;
	int contA = 0;
	int contB = 0;
	int contC = 0;

	printf("\nSTATISTICA VOTAZIONI\n");
	printf("\ninserisci una votazione (digita F per terminare) : \n");

	while ((voto = getchar()) != 'F')
	{
		switch(voto)
		{
			case 'a' :
			case 'A' :
			contA++;
			break;

			case 'b':
			case 'B':
			contB++;
			break;

			case 'c':
			case 'C':
			contC++;
			break;

			default :
			printf("\nattenzione il voto non e' valido\n");
			break;
		}
	}

    printf("\nVOTO A: %d\nVOTO B: %d\nVOTO C: %d\n\n", contA, contB, contC);
	return 0;
}
il codice funziona, il problema che anche quando inserisco un carattere "corretto" il programma prima incrementa il contatore della variabile inserita e poi va nell'istruzione default mostrando a video attenzione il voto non e' valido.

3 Risposte

  • Re: [SWITCH] - problema istruzione default

    Il fatto è che il tasto return viene gestito dal getchar che lo ritiene non valido.

    Prima del default aggiungi

    case '\n':
    break;

    P.S. Lo switch non è una funzione
  • Re: [SWITCH] - problema istruzione default

    oregon ha scritto:


    Il fatto è che il tasto return viene gestito dal getchar che lo ritiene non valido.

    Prima del default aggiungi

    case '\n':
    break;

    P.S. Lo switch non è una funzione
    grazie mille, ora funziona correttamente. Per return gestito dal getchar intendi il carattere newline che viene aggiunto all'input quando si preme invio? Se si allora penso di aver capito il problema.

    PS: comado di selezione multipla, pardon
  • Re: [SWITCH] - problema istruzione default

    Sì corretto
Devi accedere o registrarti per scrivere nel forum
3 risposte