Problema programma C?

di il
3 risposte

Problema programma C?

Ciao, devo fare un piccolo programma che, dati in input i dettagli di un soggiorno (quanti giorni si sta, se in bassa o alta stagione, e quale tipo di camera si vuole) dia il costo totale. Il programma viene eseguito ma il costo totale è sempre sbagliato! Dove è l'errore?
Grazie

#include <stdio.h>
#include <stdlib.h>
#define altasing 50
#define altadop 90
#define altatripla 140
#define bassasing 40
#define bassadop 75
#define bassatripla 110

int main ()
{
int giorni, prezzo, costo, costo1;
char periodo, tipo;

printf ("\nInserisca il numero di giorni del pernottamento: ");
scanf ("%d", &giorni);
printf ("Inserisca il periodo desiderato (alta o bassa stagione): ");
scanf ("%c", &periodo);
while(getchar()!='\n');
printf ("Inserisca il tipo di camera che desidera (s, d, t): ");
scanf ("%c", &tipo);

if (periodo=='b')
{
if (tipo=='s')
costo=bassasing;
else if (tipo=='d')
costo=bassadop;
else if (tipo=='t')
costo=bassatripla;
}

else if (periodo=='a')
{
if (tipo=='s')
costo=altasing;
else if (tipo=='d')
costo=altadop;
else if (tipo=='t')
costo=altatripla;
}

costo1=costo*giorni;

printf ("\nIl costo del pernottamento è pari a: %d euro", costo1);
system ("PAUSE");
return 0;
}

3 Risposte

  • Re: Problema programma C?

    Ciao,
    il problema era la lettura dei caratteri: inserisci uno spazio per eliminare i "leading white spaces".
    
    #include <stdio.h>
    #include <stdlib.h>
    #define altasing 50
    #define altadop 90
    #define altatripla 140
    #define bassasing 40
    #define bassadop 75
    #define bassatripla 110
    
    int main ()
    {
        int giorni, costo, costo1;
        char periodo, tipo;
    
        printf ("\nInserisca il numero di giorni del pernottamento: ");
        scanf ("%d", &giorni);
        printf ("Inserisca il periodo desiderato (alta o bassa stagione): ");
        scanf (" %c", &periodo);
        printf ("Inserisca il tipo di camera che desidera (s, d, t): ");
        scanf (" %c", &tipo);
    
        if (periodo=='b')
        {
            if (tipo=='s')
                costo=bassasing;
            else if (tipo=='d')
                costo=bassadop;
            else if (tipo=='t')
                costo=bassatripla;
        }
    
        else if (periodo=='a')
        {
            if (tipo=='s')
                costo=altasing;
            else if (tipo=='d')
                costo=altadop;
            else if (tipo=='t')
                costo=altatripla;
        }
    
        costo1=costo*giorni;
    
        printf ("\nIl costo del pernottamento e' pari a: %d euro", costo1);
        return 0;
    }
    
  • Re: Problema programma C?

    Grazie mille!
  • Re: Problema programma C?

    Prego! In effetti queste cose sono un po' subdole, almeno secondo me...

Devi accedere o registrarti per scrivere nel forum
3 risposte