Newsgroup: it.comp.aiuto
Titolo: Chi mi corregge il programma???

iao! 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*/
                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

 Grazie!!!
Perchè hai dichiarato ed inizializzato le variabili fuori dal main()?
-- 
"Cuando era presidente del Banco Central de Cuba firmé los billetes con 
la palabra Che, para burlarme, porque el dinero, fetiche de mierda, debe 
ser feo."

 Perchè hai dichiarato ed inizializzato le variabili fuori dal main()?
while(nr < 5){
	printf("Iserire la quantità venduta del prodotto %d:\t",nr);
  scanf("%d", &quantita);
Qui stai usando una variabile e la modifichi dentro il ciclo.
Adesso non ho tempo di guardarlo meglio, ma, se permetti un consiglio, io 
cercherei di dare un po' d'ordine al tutto. Controlla bene che le variabili 
facciano "quello che vuoi tu" e usane pure quante ne vuoi, tanto con i 
programmini che si fanno al principio non è che uno rischia di andare in "out 
of memory" :-)
Buona fortuna
(perchè non vai direttamente sul c++? Ha notazioni un po' meno confusionarie)


 Perchè hai dichiarato ed inizializzato le variabili fuori dal 
main()?
-- 
file:///media/Documenti/Documenti/Immagini/Icone%20e%20Simboli/sakurambo.bmp

 
-- 
file:///media/Documenti/Documenti/Immagini/Icone%20e%20Simboli/sakurambo.bmp

 C sta alla base di tutti gli altri linguaggi successivi, no?
Si. Solo che il c++ ha una notazione un po' più immediata per tante cose. Ma 
insomma, era solo una considerazione mia. Non farmi caso :-)
Per il resto, ho anche preso e compilato il tuo programma. Poi ho lasciato 
perdere, che avevo (ho) da fare.
Almeno all'inizio fregatene in toto delle ottimizzazioni. L'importante è che 
funzioni. Poi poco a poco puoi renddere più raffinato il tutto, una volta che 
l'algoritmo funziona. Ah, altro consiglio che mi avevano dato era di fare, 
*prima* di iniziare a programmare, un diagramma di flusso di cosa avrebbe 
dovuto fare il programma, in modo da avere le idee chiare quando inizi a 
scrivere il codice. Ovviamente io non l'ho mai fatto. Comunque sono tutto meno 
che un esperto. Ti consiglio di scrivere su altri NG. esiste it.comp.lang.c 
dove sicuramente potrebbero aiutarti con molto più efficacia.
Saluti & happy hacking ;-)
