Ispanicuz ha scritto:
Prova così...
int esercizio()
{
// ESERCIZIO 4.19: calcolo delle vendite.
// Un rivenditore on-line vende 5 differenti prodotti i cui prezzi al dettaglio sono mostrati nella seguente tabella:
// Numero del prodotto 1 - Prezzo al dettaglio $2,98
// Numero del prodotto 2 - Prezzo al dettaglio $4,50
// Numero del prodotto 3 - Prezzo al dettaglio $9,98
// Numero del prodotto 4 - Prezzo al dettaglio $4,49
// Numero del prodotto 5 - Prezzo al dettaglio $6,87
// Scrivete un programma che legga una serie di coppie di numeri come segue:
// a) Numero del prodotto;
// b) Quantità venduta in un giorno;
// Il vostro programma deve utilizzare un'istruzione SWITCH per permettervi di determinare il prezzo al dettaglio per ogni prodotto. Inoltre deve calcolare e stampare il valore al dettaglio totale di tutti i prodotti venduti nella settimana.
// Codice sorgente:
int numProdotto;
float prezzoDett;
float incassoLun = 0;
float incassoMar = 0;
float incassoMer = 0;
float incassoGio = 0;
float incassoVen = 0;
float incassoSab = 0;
float incassoDom = 0;
float incassoLunCounter = 0;
float incassoMarCounter = 0;
float incassoMerCounter = 0;
float incassoGioCounter = 0;
float incassoVenCounter = 0;
float incassoSabCounter = 0;
float incassoDomCounter = 0;
printf( "Inserire il codice del prodotto: " );
scanf( "%d", &numProdotto );// scanf( "%f", &numProdotto ); %f ma l'hai dichiarata come int;
if ((numProdotto >0) && (numProdotto <6))
{
float quantLun;
printf( "Inserire la quantità venduta Lunedi: " );
scanf( "%f", &quantLun );
float quantMar;
printf( "Inserire la quantità venduta Martedì: " );
scanf( "%f", &quantMar );
float quantMer;
printf( "Inserire la quantità venduta Mercoledì: " );
scanf( "%f", &quantMer );
float quantGio;
printf( "Inserire la quantità venduta Giovedì: " );
scanf( "%f", &quantGio );
float quantVen;
printf( "Inserire la quantità venduta Venerdì: " );
scanf( "%f", &quantVen );
float quantSab;
printf( "Inserire la quantità venduta Sabato: " );
scanf( "%f", &quantSab );
float quantDom;
printf( "Inserire la quantità venduta Domenica: " );
scanf( "%f", &quantDom );
switch ( numProdotto ) {
case 1://'1' cosi' significa char nn so se convertiva corretto per essere sicuro ho messo un int
prezzoDett = 2.98;
incassoLun = quantLun * prezzoDett;
incassoMar = quantMar * prezzoDett;
incassoMer = quantMer * prezzoDett;
incassoGio = quantGio * prezzoDett;
incassoVen = quantVen * prezzoDett;
incassoSab = quantSab * prezzoDett;
incassoDom = quantDom * prezzoDett;
break;
case 2://'2' come sopra
prezzoDett = 4.50;
incassoLun = quantLun * prezzoDett;
incassoMar = quantMar * prezzoDett;
incassoMer = quantMer * prezzoDett;
incassoGio = quantGio * prezzoDett;
incassoVen = quantVen * prezzoDett;
incassoSab = quantSab * prezzoDett;
incassoDom = quantDom * prezzoDett;
break;
case 3://'3' come sopra
prezzoDett = 9.98;
incassoLun = quantLun * prezzoDett;
incassoMar = quantMar * prezzoDett;
incassoMer = quantMer * prezzoDett;
incassoGio = quantGio * prezzoDett;
incassoVen = quantVen * prezzoDett;
incassoSab = quantSab * prezzoDett;
incassoDom = quantDom * prezzoDett;
break;
case 4://'4' come sopra
prezzoDett = 4.49;
incassoLun = quantLun * prezzoDett;
incassoMar = quantMar * prezzoDett;
incassoMer = quantMer * prezzoDett;
incassoGio = quantGio * prezzoDett;
incassoVen = quantVen * prezzoDett;
incassoSab = quantSab * prezzoDett;
incassoDom = quantDom * prezzoDett;
break;
case 5://'5' come sopra
prezzoDett = 6.87;
incassoLun = quantLun * prezzoDett;
incassoMar = quantMar * prezzoDett;
incassoMer = quantMer * prezzoDett;
incassoGio = quantGio * prezzoDett;
incassoVen = quantVen * prezzoDett;
incassoSab = quantSab * prezzoDett;
incassoDom = quantDom * prezzoDett;
break;
}
incassoLunCounter = incassoLunCounter + incassoLun;
incassoMarCounter = incassoMarCounter + incassoMar;
incassoMerCounter = incassoMerCounter + incassoMer;
incassoGioCounter = incassoGioCounter + incassoGio;
incassoVenCounter = incassoVenCounter + incassoVen;
incassoSabCounter = incassoSabCounter + incassoSab;
incassoDomCounter = incassoDomCounter + incassoDom;
printf( "\nInserire il codice del prodotto: " );
scanf( "%d", &numProdotto );
printf( "\n%8s%9s%10s%9s%9s%8s%10s", "LUNEDI", "MARTEDI", "MERCOLEDI", "GIOVEDI", "VENERDI", "SABATO", "DOMENICA" );
printf( "\n\n%8.3f%9.3f%10.3f%9.3f%9.3f%8.3f%10.3f\n", incassoLunCounter, incassoMarCounter, incassoMerCounter, incassoGioCounter, incassoVenCounter, incassoSabCounter, incassoDomCounter );
}else{
printf("devi inserire un numero compreso fra 1 e 5\n");
return -1;
}
return 0;
}
int main(int argc, char *argv[])
{
puts( "Questo è un programma per il calcolo e la stampa dell'incasso settimanale per i 5 differenti codici-prodotto: 1, 2, 3, 4 e 5.\n" );
while (esercizio()<0)
{
continue;
}
return 0;
}
andrebbe ancora migliorato cmq.....
Grazie alla tua correzione sono riuscito a capire l'errore nel CASE dello SWITCH cioè case 1: e non case '1': .... così i valori vengono ma mi resta il problema del caso default su come inserirlo perchè come si vede dal printscreen il prodotto 10 non esiste....
http://prntscr.com/h6h7s
// ESERCIZIO 4.19: calcolo delle vendite.
// Un rivenditore on-line vende 5 differenti prodotti i cui prezzi al dettaglio sono mostrati nella seguente tabella:
// Numero del prodotto 1 - Prezzo al dettaglio $2,98
// Numero del prodotto 2 - Prezzo al dettaglio $4,50
// Numero del prodotto 3 - Prezzo al dettaglio $9,98
// Numero del prodotto 4 - Prezzo al dettaglio $4,49
// Numero del prodotto 5 - Prezzo al dettaglio $6,87
// Scrivete un programma che legga una serie di coppie di numeri come segue:
// a) Numero del prodotto;
// b) Quantità venduta in un giorno;
// Il vostro programma deve utilizzare un'istruzione SWITCH per permettervi di determinare il prezzo al dettaglio per ogni prodotto. Inoltre deve calcolare e stampare il valore al dettaglio totale di tutti i prodotti venduti nella settimana.
// Codice sorgente:
#include <stdio.h>
int main (void) {
puts( "Questo è un programma per il calcolo e la stampa dell'incasso settimanale per i 5 differenti codici-prodotto: 1, 2, 3, 4 e 5.\n" );
int numProdotto;
float prezzoDett;
float incassoLun = 0;
float incassoMar = 0;
float incassoMer = 0;
float incassoGio = 0;
float incassoVen = 0;
float incassoSab = 0;
float incassoDom = 0;
float incassoLunCounter = 0;
float incassoMarCounter = 0;
float incassoMerCounter = 0;
float incassoGioCounter = 0;
float incassoVenCounter = 0;
float incassoSabCounter = 0;
float incassoDomCounter = 0;
printf( "Inserire il codice del prodotto (999 per terminare): " );
scanf( "%d", &numProdotto );
while ( numProdotto != 999 ) {
switch ( numProdotto ) {
case 1:
prezzoDett = 2.98;
break;
case 2:
prezzoDett = 4.50;
break;
case 3:
prezzoDett = 9.98;
case 4:
prezzoDett = 4.49;
break;
case 5:
prezzoDett = 6.87;
break;
}
float quantLun;
printf( "Inserire la quantità venduta Lunedi: " );
scanf( "%f", &quantLun );
float quantMar;
printf( "Inserire la quantità venduta Martedì: " );
scanf( "%f", &quantMar );
float quantMer;
printf( "Inserire la quantità venduta Mercoledì: " );
scanf( "%f", &quantMer );
float quantGio;
printf( "Inserire la quantità venduta Giovedì: " );
scanf( "%f", &quantGio );
float quantVen;
printf( "Inserire la quantità venduta Venerdì: " );
scanf( "%f", &quantVen );
float quantSab;
printf( "Inserire la quantità venduta Sabato: " );
scanf( "%f", &quantSab );
float quantDom;
printf( "Inserire la quantità venduta Domenica: " );
scanf( "%f", &quantDom );
incassoLun = quantLun * prezzoDett;
incassoMar = quantMar * prezzoDett;
incassoMer = quantMer * prezzoDett;
incassoGio = quantGio * prezzoDett;
incassoVen = quantVen * prezzoDett;
incassoSab = quantSab * prezzoDett;
incassoDom = quantDom * prezzoDett;
incassoLunCounter = incassoLunCounter + incassoLun;
incassoMarCounter = incassoMarCounter + incassoMar;
incassoMerCounter = incassoMerCounter + incassoMer;
incassoGioCounter = incassoGioCounter + incassoGio;
incassoVenCounter = incassoVenCounter + incassoVen;
incassoSabCounter = incassoSabCounter + incassoSab;
incassoDomCounter = incassoDomCounter + incassoDom;
printf( "\nInserire il codice del prodotto: " );
scanf( "%d", &numProdotto );
}
printf( "\n%10s%11s%13s%11s%11s%10s%12s", "LUNEDI", "MARTEDI", "MERCOLEDI", "GIOVEDI", "VENERDI", "SABATO", "DOMENICA" );
printf( "\n\n%10.3f%11.3f%13.3f%11.3f%11.3f%10.3f%12.3f", incassoLunCounter, incassoMarCounter, incassoMerCounter, incassoGioCounter, incassoVenCounter, incassoSabCounter, incassoDomCounter );
}
/*
default:
puts( "I codici-prodotto sono da 1 a 5. Re-inserire il codice del prodotto (999 per terminare): " );
scanf( "%d", &numProdotto );
break;
*/