Problema su programma con uso di switch

di il
5 risposte

Problema su programma con uso di switch

Ragazzi dove sbaglio??? il programma mi va sempre in loop e prima l'ho provato togliendo la scanf dopo la printf ed inserendo un while( (articolo = getchar() ) != EOF) con scarsi risultati...ecco il programma
#include <stdio.h>
#include <stdlib.h>

int main()
{
    //INSERIMENTO DI UN VETTORE CON I PREZZI DEI PRODOTTI
    double a[5]={2.98, 4.50, 9.98, 4.49, 6.87};
    int articolo; //VARIABILE PER LO SWICHT
    int a_tot=0, b_tot=0, c_tot=0, d_tot=0, e_tot=0; //CONTATORI
    
    printf("Inserisci il numero dell'articolo: ""\n");
    scanf("%d", &articolo);
    
    while (articolo != -1)
    {
        switch (articolo)
        {
            case '1':  //INCREMENTA IL CONTATORE UNO SE VIENE INSERITO 1
                a_tot++;
                break;
                
            case '2':
                b_tot++;
                break;
                
            case '3':
                c_tot++;
                break;
                
            case '4':
                d_tot++;
                break;
                
            case '5':
                e_tot++;
                break;
                
                //CASE NEL CASO VENGA INSERITO CARATTERE VUOTO O INVIO
            case ' ': case '\n':
                break;
                
                //IN TUTTI GLI ALTRI CASI
            default:
                printf("Numero articolo non valido, inseriscilo di nuovo\n");
                break;
        }
    }
    
    //CALCOLO DEI PEZZI VENDUTI E DEL GUADAGNO
    printf("Totale articoli n1 venduti: %d", a_tot);
    printf("Totale guadagno di articoli n1 venduti: %f", a_tot*a[0]);
    printf("Totale articoli n2 venduti: %d", b_tot);
    printf("Totale guadagno di articoli n2 venduti: %f", b_tot*a[1]);
    printf("Totale articoli n3 venduti: %d", c_tot);    
    printf("Totale guadagno di articoli n3 venduti: %f", c_tot*a[2]);
    printf("Totale articoli n4 venduti: %d", d_tot);
    printf("Totale guadagno di articoli n4 venduti: %f", d_tot*a[3]);
    printf("Totale articoli n5 venduti: %d", e_tot);
    printf("Totale guadagno di articoli n5 venduti: %f", e_tot*a[4]);
    
    
    
    return 0;
}
come compilatore uso XCODE

5 Risposte

  • Re: Problema su programma con uso di switch

    #include <stdio.h>
    #include <stdlib.h>
     
    int main()
    {
        //INSERIMENTO DI UN VETTORE CON I PREZZI DEI PRODOTTI
        double a[5]={2.98, 4.50, 9.98, 4.49, 6.87};
        int articolo; //VARIABILE PER LO SWICHT
        int a_tot=0, b_tot=0, c_tot=0, d_tot=0, e_tot=0; //CONTATORI
     
        printf("Inserisci il numero dell'articolo: \n");
        scanf("%d",&articolo);
     
        while ( articolo != -1)
        {
            switch (articolo)
            {
                case 1:  //INCREMENTA IL CONTATORE UNO SE VIENE INSERITO 1
                    a_tot++;
                    break;
     
                case 2:
                    b_tot++;
                    break;
     
                case 3:
                    c_tot++;
                    break;
     
                case 4:
                    d_tot++;
                    break;
     
                case 5:
                    e_tot++;
                    break;
     
     
     
               //IN TUTTI GLI ALTRI CASI
                default:
                    printf("Numero articolo non valido, inseriscilo di nuovo");
                    break;
            }
             printf("Inserisci il numero dell'articolo: \n");
             scanf("%d",&articolo);
        }
     
    //CALCOLO DEI PEZZI VENDUTI E DEL GUADAGNO
        printf("Totale articoli n1 venduti: %d", a_tot);
        printf("Totale guadagno di articoli n1 venduti: %f", a_tot*a[0]);
        printf("Totale articoli n2 venduti: %d", b_tot);
        printf("Totale guadagno di articoli n2 venduti: %f", b_tot*a[1]);
        printf("Totale articoli n3 venduti: %d", c_tot);
        printf("Totale guadagno di articoli n3 venduti: %f", c_tot*a[2]);
        printf("Totale articoli n4 venduti: %d", d_tot);
        printf("Totale guadagno di articoli n4 venduti: %f", d_tot*a[3]);
        printf("Totale articoli n5 venduti: %d", e_tot);
        printf("Totale guadagno di articoli n5 venduti: %f", e_tot*a[4]);
     
     
     
        return 0;
    }
    così funziona va bene o lo potrei migliorare???
  • Re: Problema su programma con uso di switch

    Puoi migliorarlo.
    Hai un array di 5 articoli e 5 diversi contatori. Perché non fai un array di 5 contatori?
    Ti risparmi uno switch e parecchie righe di codice.
    Poi al posto del while puoi mettere un do while richiedendo una sola volta il numero di articolo.

    E comunque nel tuo codice quando esci dal while?
  • Re: Problema su programma con uso di switch

    shodan ha scritto:


    E comunque nel tuo codice quando esci dal while?
    esco quando inserisco l'EOF
    comunque il programma mi chiedeva espressamente di usare lo swicht...
  • Re: Problema su programma con uso di switch

    Me ne sono accorto dopo.
    comunque il programma mi chiedeva espressamente di usare lo swicht...
    Questo però non lo avevi precisato.
    Ah, metti dei newline nelle printf o l'output è confuso.
  • Re: Problema su programma con uso di switch

    Si scusa me n'ero dimenticato...
    grazie mille per l'aiuto
Devi accedere o registrarti per scrivere nel forum
5 risposte