PDA

Visualizza la versione completa : [C++] Ciclo iterativo con confronto valori


Mauri94
07-03-2011, 15:31
Ciao a tutti, ho provato a risolvere il problema, ma non capisco cos' che non funzioni. Non un problema di analisi, il problema semplice. Ho sbagliato a strutturare il programma? Ecco l'esercizio:

- Una ditta produce pacchetti di sale. Tali pacchetti devono contenere 1 Kg di sale con una tolleranza in pi o in meno del 2%. Costruisci un algoritmo che, data in ingresso la sequenza dei pesi dei pacchetti (che termina con 0), fornisca:
1) I pacchetti di peso corretto, sottopeso e sovrappeso;
2) Il peso totale della merce nei pacchetti a norma ed il peso totale dei pacchetti fuori norma;

Ecco il mio algoritmo: (L'unica cosa di cui non ho tenuto conto 'la sequenza che termina con 0 dei pacchetti', che non ho capito a cosa serve, cosa significa, e come inserire una condizione simile.. mi aiutereste?)


#include <iostream>
using namespace std;

int main () {
float peso, somma, somma2, cont=0, num;
int flag, n;

cout <<endl;
cout <<"Quanti pacchetti vuoi inserire?"<<endl;
cin >> n;

while (cont<n) {

cout <<"Inserisci il peso del pacchetto di sale in Kg."<<endl;
cin >> peso;

cont=cont+1;

if (peso==1) {
cout <<"Il pacchetto in norma"<<endl;
flag=0;
peso=num;
}
if (peso>1) {
cout <<"Il pacchetto sovrappeso"<<endl;
flag=1;
}
if (peso<1) {
cout <<"Il pacchetto sottopeso"<<endl;
flag=1;
}
}

if (flag==0) {
somma=somma+num;
cout <<"Il peso dei pacchetti in norma "<<somma<<endl;
}
if (flag==1) {
somma2=somma2+peso;
cout <<"Il peso dei pacchetti fuori norma "<<somma<<endl;
}

return 0;
system ("Pause");
}

jobv
08-03-2011, 08:17
Ciao,

forse potresti vederla in questo modo:

non chiedere quanti sacchetti si desidera inserire, ma (per esempio), in un ciclo infinito del tipo while(1):

1) leggi il peso del primo sacchetto (si suppone che ad ogni inserimento l'utente schiacci invio)

2) se > 0 allora procedi con i tuoi if magari aggiornando direttamente la variabile somma senza utilizzare la varibile flag.

3) se, invece, == 0 usi l'istruzione "break" che interrompe il ciclo visto che uno 0 indica la fine della sequenza.

A questo punto termini.

Mauri94
08-03-2011, 13:37
Ma cosa vuol dire chiudere la squenza con 0?

jobv
08-03-2011, 13:50
Credo che intenda questo: ho 2 sacchetti di 5 kg e 2 kg.

Nell'usare il programma digiter:

5 [INVIO]
2 [INVIO]
0 [INVIO]

Mauri94
08-03-2011, 13:54
Perfetto, tutto chiaro. Grazie!

jobv
08-03-2011, 13:57
nulla

Loading