PDA

View Full Version : [C++]Ciclo do while dentro for


sgravozzz
11-12-2012, 13:03
Salve a tutti! Mi chiamo Matteo e scrivo dalla provincia di Catania. Avevo una domanda molto importante e sopratutto urgente da chiarire: E' possibile inserire un ciclo Do while dentro un ciclo for? Ecco l'esempio

#include <cstdlib>
#include <iostream>

using namespace std;

int main () {
int i,a,p;

p=1;
for ( i=0; i<10; i++) {
do {
cout<<"Inserisci il numero";
cin>> a; }
while ( a==0 ) ;
p=p*a; }
cout<<"Il prodotto e:"<<p<<"";

system ("PAUSE"); }

"Inserisci 10 numeri diversi da 0 e calcolane il prodotto"

Il programma aveva lo scopo di inserire 10 numeri diversi da 0 e di calcolarne il prodotto. Il problema sorge dal fatto che ciò era il quesito di un compito in classe, e la professoressa mi ha valutato ciò come errore dicendo che dovevo inserire una semplice if ma se faccio in questo modo potrei inserire 10 numeri e tra questi anche un eventuale 0 ed il contatore continua ad incrementare ( il programma come da me strutturato funge perfettamente )
Volevo sapere se secondo voi è corretto così oppure non va bene come struttura. Grazie infinitamente in anticipo, la questione è urgente quindi spero mi rispondiate il prima possibile.

vendettaaaaa
11-12-2012, 15:56
Mi pare corretto. Ma l'if dove lo voleva? Al posto del do-while?

sgravozzz
11-12-2012, 16:25
Mi pare corretto. Ma l'if dove lo voleva? Al posto del do-while?

Esatto, l'unico modo per inserire questa if era anche decrementare di un unità il contatore però nella verifica mi ha segnato solo l'errore inserendo if al posto del do while :S chiederò spiegazioni

vendettaaaaa
11-12-2012, 17:00
Esatto, l'unico modo per inserire questa if era anche decrementare di un unità il contatore però nella verifica mi ha segnato solo l'errore inserendo if al posto del do while :S chiederò spiegazioni
Fallo in modo garbato mi raccomando, ai prof in genere non piace essere corretti da uno studente...ti suggerisco di presentarti con il tuo programma funzionante, la sua versione che fa cilecca in caso digiti 0, e la sua versione corretta con il decremento di i, così se proprio si impunta potrà solo dirti "dovevi fare l'esercizio usando per forza l'if, il do-while devo ancora spiegarlo" :asd:

songoge
11-12-2012, 19:49
Concettualmente il tuo codice non è errato.
Solitamente però si preferisce non usare cicli annidati per questioni di prestazioni.
Tutto sta a sapere cosa richiedeva esattamente l'esercizio. Utilizzando l'if, il ciclo for scarta tutti i valori diversi da 0 e fa un prodotto di n numeri con 0<n<=10.
Se utilizzi il tuo codice, il prodotto viene fatto sempre con n=10
Puoi postare esattamente il testo dell'esercizio? Così vediamo qual'era l'intento dell'esercizio.

sgravozzz
11-12-2012, 22:40
Il testo era:
Dando in input 10 numeri diversi da 0, calcolane il prodotto.

Il testo è un po ambiguo a mio modo di vedere difatti durante la verifica ho chiesto io stesso alla prof cosa avrebbe dovuto fare il programma in caso avessi inserito 0, e lei ha detto di inserire nuovamente un altro numero, per questo motivo ho scelto un do while per fare in modo che n sia sempre 10.

Vado ad un 3° liceo scientifico e non penso proprio che la prof mi sta a segnare un errore del genere ( che tra l'altro mi ha scalato 3 punti, per questo motivo mi da un po fastidio ) per motivi prestazionali :D

vendettaaaaa
12-12-2012, 00:16
Il testo era:
Dando in input 10 numeri diversi da 0, calcolane il prodotto.

Il testo è un po ambiguo a mio modo di vedere difatti durante la verifica ho chiesto io stesso alla prof cosa avrebbe dovuto fare il programma in caso avessi inserito 0, e lei ha detto di inserire nuovamente un altro numero, per questo motivo ho scelto un do while per fare in modo che n sia sempre 10.

Vado ad un 3° liceo scientifico e non penso proprio che la prof mi sta a segnare un errore del genere ( che tra l'altro mi ha scalato 3 punti, per questo motivo mi da un po fastidio ) per motivi prestazionali :D
3 punti per aver fatto giusto??? :eek:
Dalle un cazzotto da parte mia :boxe: :D

Albi89
12-12-2012, 12:49
Il testo è ambiguo, potenzialmente potete avere ragione entrambi.
Purtroppo, in questi casi, i prof. hanno sempre più ragione :(

zanardi84
12-12-2012, 16:49
Adesso insegnano il C/C++ allo scientifico???
Ai miei tempi era tanto se si andava in aula computer ad avviare il turbo Pascal...

Ci sono osservazioni da fare sul testo del tema:

"Dati 10 numeri in input..." Uno per volta? Da una stringa preventivamente creata e verificata? Da un file?

Cosa dovrebbe succedere se per caso si digitasse 0?

Cosa dovrebbe succedere se per caso si digitasse un carattere o una stringa, o qualcosa del tipo "0A25T-°" che comprende un risotto di caratteri?

Possibile che chieda di ottimizzare il codice? Mi pare assurdo. Ti insegnano a ottimizzare e non a renderlo sicuro, che è la primissima cosa da avere in mente.