Un'azienda di vendita per corrispondenza vende 5 prodotti differenti i
cui prezzi al dettaglio sono i seguenti:
1 = € 2.29
2 = € 4.50
3 = € 9.98
4 = € 4.49
5 = € 6.87
Scrivete un programma che legga una serie di coppie di numeri come
segue:
1- numero prodotto;
2 – quantità venduta in un giorno;
Il vostro programma dovrà utilizzare una istruzione switc per aiutare
a determinare il prezzo al dettaglio di ogni prodotto. Il programma
dovrà calcolare e visualizzare il totale al dettaglio di tutti i
prodotti venduti nell'ultima settimana.
/*Esercizio che calcola il valore totale di 5 prodotti venduti in una
settimana */
#include <stdio.h>
/*Dichiaro ed inizializzio le variabili*/
float prodA = 0, prodB = 0, prodC = 0, prodD = 0, prodE = 0, totale;
int count, quantita, nr = 1;
int main()
{
for(count = 1; count <= 7; count ++) /*Qui ho cercato
di far ciclare l'intero programma per sette volte, in modo da simulare
i giorni della
settimana. Senza risultato.*/
{
while(nr <= 5) /*Qui ho personalizzato il prog.:
anzicchè far inserire all'utente il numero del prodotto, ho fatto i
modo che fosse il programma a
richiederlo. Questo funziona.*/
{
printf("Iserire la quantità venduta del prodotto %d:
\t",nr); /*Qui il programma richide la quantità del
prodotto specifico*/
scanf("%d", &quantita); /*Assegno il valore
ottenuto a "quantita"*/
switch(nr) /*A seconda del valore di nr, assegno
la quantità al prodotto relativo*/
{
case '1': /*Se nr è uguale a 1*/
prodA += quantita; /*Somma quantità a prodA*/
break; /*Esci da switch*/
case '2': /*Idem*/
prodB += quantita;
break;
case '3': /*Idem*/
prodC += quantita;
break;
case '4': /*Idem*/
prodD += quantita;
break;
case '5': /*Idem*/
prodE += quantita;
break;
case '\n':
case '\t':
case ' ':
break;
/*default:
printf("Dati errati");
break;*/
} /*Fine di switch*/
nr++; /*Incremento nr per perfezionare
il ciclo*/
} /*Fine di while*/
} /*Fine di for*/
prodA *= 2.98; /*Moltiplico i totali per il
valore di ogni prodotto*/
prodB *= 4.50;
prodC *= 9.98;
prodD *= 4.49;
prodE *= 6.87;
totale = prodA + prodB + prodC + prodD + prodE ;
/*Visualizzo tutti i risultati*/
printf("L'incasso totale della settimana è stato di:
%.2f\n", totale);
printf("Così suddiviso:\nprodotto A:%.2f\nprodotto B:
%.2f\nprodotto C:%.2f\nprodotto D:%.2f\nprodotto E:%.2f\n", prodA ,
prodB , prodC , prodD , prodE);
return 0;
} /*Fine di main()*/
I problemi sono 2:
a – il ciclo for non funziona, il programma esegue una sola volta le
istruzioni del while;
b – il programma restituisce tutti risultati uguali a 0.
Non usate istruzioni diverse dalle mie, tenete presente che sono al
capitolo 4 ed ho fatto solo quelle più semplici.
Grazie!!!
--
file:///media/Documenti/Documenti/Immagini/Icone%20e%20Simboli/sakurambo.bmp
case '\n':
case '\t':
case ' ':
perche' sono anch'io alle prime armi e non sapevo che si potesse
"accorpare" diverse istruzioni "case" (comunque penso che si possano
aggiungere di nuovo). Me ne scuso.
Cosi', comunque, dovrebbe funzionare (almeno sul mio pc funziona):
#include <stdio.h>
float prodA = 0, prodB = 0, prodC = 0, prodD = 0, prodE = 0, totale;
int count, quantita, nr = 1;
main()
{
for(count = 1; count <= 7; count++)
{
printf("Settimana numero %d\n", count);
/* Aggiunto da me per debug :-) */
nr = 1; /* Occorre inizializzare il contatore ogni volta,
altrimenti il ciclo viene effettuato una volta sola */
while(nr <= 5)
{
printf("Iserire la quantit� venduta del prodotto %d: \t", nr);
scanf("%d", &quantita);
switch(nr)
{
/* i "case" dovrebbero essere senza apici, almeno con "gcc" cosi'
funziona (penso che cio' dipenda dal fatto che nr e' dichiarato come int) */
case 1:
prodA += quantita;
break;
case 2:
prodB += quantita;
break;
case 3:
prodC += quantita;
break;
case 4:
prodD += quantita;
break;
case 5:
prodE += quantita;
break;
}
nr++;
}
}
prodA *= 2.98;
prodB *= 4.50;
prodC *= 9.98;
prodD *= 4.49;
prodE *= 6.87;
totale = prodA + prodB + prodC + prodD + prodE;
printf("L'incasso totale della settimana e' stato di: %2f\n", totale);
printf("Cosi' suddiviso:\nprodottoA: %2f\nprodottoB: %2f\nprodottoC:
%2f\nprodottoE: %2f\n", prodA, prodB, prodC, prodD, prodE);
return 0;
}
Cordiali saluti,
Federico.
Sakurambo wrote:
> Ciao! Sono un �programmatore� alle prime armi, sto imparando il
> linguaggio C sul Deitel&Deitel e sono arrivato al capitolo 4. Mi trovo
> davanti ad un esercizio apparentemente semplice ma che non riesco a
> far funzionare a dovere. Ecco la traccia:
>
>
> Un'azienda di vendita per corrispondenza vende 5 prodotti differenti i
> cui prezzi al dettaglio sono i seguenti:
>
> 1 = � 2.29
> 2 = � 4.50
> 3 = � 9.98
> 4 = � 4.49
> 5 = � 6.87
>
> Scrivete un programma che legga una serie di coppie di numeri come
> segue:
>
> 1- numero prodotto;
> 2 � quantit� venduta in un giorno;
>
> Il vostro programma dovr� utilizzare una istruzione switc per aiutare
> a determinare il prezzo al dettaglio di ogni prodotto. Il programma
> dovr� calcolare e visualizzare il totale al dettaglio di tutti i
> prodotti venduti nell'ultima settimana.
>
>
> /*Esercizio che calcola il valore totale di 5 prodotti venduti in una
> settimana */
>
> #include <stdio.h>
>
> /*Dichiaro ed inizializzio le variabili*/
> float prodA = 0, prodB = 0, prodC = 0, prodD = 0, prodE = 0, totale;
> int count, quantita, nr = 1;
>
> int main()
> {
> for(count = 1; count <= 7; count ++) /*Qui ho cercato
> di far ciclare l'intero programma per sette volte, in modo da simulare
> i giorni della
> settimana. Senza risultato.*/
> {
> while(nr <= 5) /*Qui ho personalizzato il prog.:
> anzicch� far inserire all'utente il numero del prodotto, ho fatto i
> modo che fosse il programma a
> richiederlo. Questo funziona.*/
> {
> printf("Iserire la quantit� venduta del prodotto %d:
> \t",nr); /*Qui il programma richide la quantit� del
> prodotto specifico*/
> scanf("%d", &quantita); /*Assegno il valore
> ottenuto a "quantita"*/
>
> switch(nr) /*A seconda del valore di nr, assegno
> la quantit� al prodotto relativo*/
> {
> case '1': /*Se nr � uguale a 1*/
> prodA += quantita; /*Somma quantit� a prodA*/
> printf("L'incasso totale della settimana � stato di:
> %.2f\n", totale);
> printf("Cos� suddiviso:\nprodotto A:%.2f\nprodotto B:
> %.2f\nprodotto C:%.2f\nprodotto D:%.2f\nprodotto E:%.2f\n", prodA ,
> prodB , prodC , prodD , prodE);
>
> return 0;
>
> } /*Fine di main()*/
>
> I problemi sono 2:
>
> a � il ciclo for non funziona, il programma esegue una sola volta le
> istruzioni del while;
> b � il programma restituisce tutti risultati uguali a 0.
>
> Non usate istruzioni diverse dalle mie, tenete presente che sono al
> capitolo 4 ed ho fatto solo quelle pi� semplici.
> Grazie!!!