Iterazione di un programma in C

di il
2 risposte

Iterazione di un programma in C

Ragazzi non riesco a capire cosa sbaglio nell'iterazione dei programmi con i cicli do-while.

Ho fatto un programma semplice allo scopo di capire bene come utilizzare il "do-while" e il confronto tra caratteri ma non funziona.

Ecco il codice


//Programma che somma il contenuto di due variabili e che ne chiede la ripetizione all'utente che risponderà con 's' se vuole ripetere e con 'n' se vuole interrompere il programma

#include <stdio.h>
#include <string.h>

int main (void)

{
    char rispostautente = 'a';
    do
    {
        float a = 0;
        float b = 0;
        
        printf("Ciao! \n");
        printf("Questo programma calcola la somma di due numeri. Immetti ora i due numeri \n");
        scanf("%f", &a);
        printf("Immetti il secondo numero \n");
        scanf("%f", &b);
        float c = a+b;
        printf("La somma dei due numeri immessi (%.2f e %.2f) è %.2f \n", a,b,c);
        printf("\n");
        
        printf("Vuoi ripetere il calcolo con altri due numeri? \n");
        printf("Scrivi 's' per ripetere il calcolo e scrivi 'n' per chiudere il programma \n");
        scanf("%c", &rispostautente);
    } while (rispostautente == 'n');
    return 0;
}

Grazie mille in anticipo!

2 Risposte

  • Re: Iterazione di un programma in C

    =='s'
    In questo modo ripeti solo con s e altri caratteri escono.
    Per finire io pulirei il buffer di lettura dopo ogni svanf eseguendo un cliclo while prendendo i caratteri fino al suo terminatore /n o eof.
    In alternativa sotto windows anche se poco STD puoi usare fflush(stdin)
  • Re: Iterazione di un programma in C

    Grazie mille! Alla fine mi ha anche dato una mano un mio amico e il codice finale (corretto) è questo qui.
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char** args)
    {
    	char rispostautente;
    
    	do
    	{
    		float a, b, c;
    		printf("Inserisci il primo numero: ");
    		scanf("%f", &a);
    		printf("Inserisci il secondo numero: ");
    		scanf("%f", &b);
    		c = a + b;
    		printf("La somma di %.2f e %.2f vale %.2f\n\n", a, b, c);
    		printf("Vuoi ripetere? (s/n)\n> ");
    		char t;
    		do
    		{
    			scanf("%c", &t);
    		} while (t == '\n');
    		rispostautente = t;
    	} while (rispostautente == 's');
    }
    
Devi accedere o registrarti per scrivere nel forum
2 risposte