|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Jun 2012
Messaggi: 7
|
[C++]Ciclo do while dentro for
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. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Mi pare corretto. Ma l'if dove lo voleva? Al posto del do-while?
|
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Jun 2012
Messaggi: 7
|
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
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Quote:
|
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Nov 2001
Messaggi: 206
|
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. |
|
|
|
|
|
#6 |
|
Junior Member
Iscritto dal: Jun 2012
Messaggi: 7
|
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 |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Quote:
Dalle un cazzotto da parte mia |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: May 2004
Città: Napoli
Messaggi: 773
|
Il testo è ambiguo, potenzialmente potete avere ragione entrambi.
Purtroppo, in questi casi, i prof. hanno sempre più ragione
__________________
If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization. --Gerald Weinberg |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Apr 2004
Città: La regione del Triplete
Messaggi: 5751
|
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.
__________________
Trattative felicemente concluse con domienico120, xbax88 ed engiel, ottimi e seri utenti. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:22.




















