|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Mar 2008
Città: Albano Laziale
Messaggi: 49
|
[c++] do while
salve...devo fare un programma con il do while ma non mi è ben chiaro come usarlo...
la traccia è la seguente: "Leggere una serie di numeri fino ad incontrare il num 0...al termine stampare la media aritmetica dei numeri letti. es: 7,5,8,4,0 media= 4.8 grazie in anticipo |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Qui non risolviamo gli esercizi degli altri, semplicemente aiutiamo se possiamo a superare le difficoltà.
Posta una tua implementazione per la soluzione dell'esercizio che devi risolvere e indicaci dove nello specifico hai difficoltà: saremo felici di aiutarti. Con questo intendo dire che se devi risolvere l'esercizio con il costrutto do-while ma il tuo problema è che non sai come si usa il do-while la soluzione è studiare il do-while Comunque a livello di traccia direi che il do-while lo devi usare per leggere la sequenza di numeri in input e memorizzarli temporaneamente in una "lista" per poi calcolare la media: - leggi un numero - se è zero ti fermi ed esci dal ciclo - altrimenti inserisci il numero nella "lista" quando il ciclo è terminato: - processi la lista elemento per elemento per calcolare la media aritmentica dei valori. Oppure potresti anche calcolare la media direttamente nel primo ciclo (nel do-while) man mano che processi ogni nuovo valore. Prova a cominciare un'implementazione e posta qualcosa.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 19-09-2008 alle 14:29. |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Mar 2008
Città: Albano Laziale
Messaggi: 49
|
il problema è ke se non ci spiegano chiaramente il do while ma ci spiegano solo un accenno io non sono in grado di risolvere l'esercizio
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Dec 2006
Città: Lodi
Messaggi: 588
|
Il ciclio do while funziona così:
Quote:
Per il tuo problema hai i tuoi valori int in un vettore. Con il ciclo ti vai a leggere il vettore e come condizione verifichi che vettore[i] sia diverso da 0. Se è diverso prosegui diminuendo la variabile i con un bel i--. Sempre all'interno del ciclio devi mettere una variabile "appoggio" che ad ogni ciclo sommerà il numero contenuto nel vettore e una seconda variabile che si incremente di 1 (n_elementi). Quando la condizione vettore[i] diverso da 0 non sarà più vera, il ciclo termina. A questo punto fuori dal ciclo basta fare media=appoggio/n_elementi. Spero ti basti questa spiegazione...se non riesci ancora a venirne a capo chiedi pure BeLakor
__________________
HWBot - BeLakor Il mio PC: alimentatore LC POWER Arkangel 850Watt, scheda video Gigabyte GTX 970 4GB OC WF3, SSD Samsung 850 PRO, 2 Velociraptor 300 GB in raid 1, ASRock X99 OC Formula, 16GB G.Skill Ripjaws 4 Series DDR4-2400, I7 5820K |
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Mar 2008
Città: Albano Laziale
Messaggi: 49
|
in teoria io dovrei fare
do { inserisci num...etcetc while (devo mettere una condizione ke finke incontro lo 0 finisce il conto dei numeri) e poi media=numeri / variabile appoggio... giusto? |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Dec 2006
Città: Lodi
Messaggi: 588
|
Il vettore devi riempirlo prima, poi lo fai leggere nel ciclo
BeLakor
__________________
HWBot - BeLakor Il mio PC: alimentatore LC POWER Arkangel 850Watt, scheda video Gigabyte GTX 970 4GB OC WF3, SSD Samsung 850 PRO, 2 Velociraptor 300 GB in raid 1, ASRock X99 OC Formula, 16GB G.Skill Ripjaws 4 Series DDR4-2400, I7 5820K |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Mar 2008
Città: Albano Laziale
Messaggi: 49
|
tranquillo
ora provo a buttare giu qualcosa! grazie a tutti cmq! per qualsiasi cosa riposto qui! |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Dec 2006
Città: Lodi
Messaggi: 588
|
Aspettiamo di vedere cosa combini
BeLakor
__________________
HWBot - BeLakor Il mio PC: alimentatore LC POWER Arkangel 850Watt, scheda video Gigabyte GTX 970 4GB OC WF3, SSD Samsung 850 PRO, 2 Velociraptor 300 GB in raid 1, ASRock X99 OC Formula, 16GB G.Skill Ripjaws 4 Series DDR4-2400, I7 5820K |
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Mar 2008
Città: Albano Laziale
Messaggi: 49
|
#include <cstdlib>
#include <iostream> using namespace std; int main(int argc, char *argv[]) { int i=1,media,num; do { cout <<"\n inserisci num: "; cin >> num; i++; } while (num=0); media = i/num; cout <<"\n la media e: "<<media; system("PAUSE"); return EXIT_SUCCESS; } per ora ho cacciato fuori questo pero non riesco a trovare l'errore che ho fatto
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Dec 2006
Città: Lodi
Messaggi: 588
|
Aggiungo dei commenti al tuo codice senza giudicare struttura...
Quote:
Io ti consiglierei di leggerti le basi di C++ perchè qui non ci siamo proprio BeLakor
__________________
HWBot - BeLakor Il mio PC: alimentatore LC POWER Arkangel 850Watt, scheda video Gigabyte GTX 970 4GB OC WF3, SSD Samsung 850 PRO, 2 Velociraptor 300 GB in raid 1, ASRock X99 OC Formula, 16GB G.Skill Ripjaws 4 Series DDR4-2400, I7 5820K |
|
|
|
|
|
|
#12 |
|
Member
Iscritto dal: Mar 2008
Città: Albano Laziale
Messaggi: 49
|
in questo esercizio non mi hanno richiesto l'uso di vettori altrimenti li dichiaravo
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Per le prossime volte, quando posti codice, inseriscilo nei tag code, altrimenti diventa illeggibile, e se pure lo fosse, molti si asterrebbero dal farlo.
Cmq ci sono diversi errori: 1) media deve essere con la virgola 2) a num gli assegni 0, il confronto si fa con '==' 3) ti manca di fare media+= num ad ogni ciclo. Sono stato lentissimo nel postare....
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Dec 2006
Città: Lodi
Messaggi: 588
|
O utilizzi un vettore, oppure nel ciclo metti una variabile che sovrascrivi ogni volta da input e una seconda variabile in cui sommi i valori...
Come preferisci tu....io personalmente userei un vettore.. BeLakor
__________________
HWBot - BeLakor Il mio PC: alimentatore LC POWER Arkangel 850Watt, scheda video Gigabyte GTX 970 4GB OC WF3, SSD Samsung 850 PRO, 2 Velociraptor 300 GB in raid 1, ASRock X99 OC Formula, 16GB G.Skill Ripjaws 4 Series DDR4-2400, I7 5820K |
|
|
|
|
|
#15 |
|
Member
Iscritto dal: Mar 2008
Città: Albano Laziale
Messaggi: 49
|
hai perfettamente ragione...
mi conviene la variabile...mi rimetto all'opera |
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Scusate ma sto vettore chi l'ha tirato fuori????
non mi sembra che l'abbia chiesto l'esercizio.
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Dec 2006
Città: Lodi
Messaggi: 588
|
Io l'ho tirato fuori il vettore, ma solo per comodità mia
Ho scritto chiaramente che può anche fare variabile di appoggio con la somma Aspettiamo la tua soluzione Davidino BeLakor
__________________
HWBot - BeLakor Il mio PC: alimentatore LC POWER Arkangel 850Watt, scheda video Gigabyte GTX 970 4GB OC WF3, SSD Samsung 850 PRO, 2 Velociraptor 300 GB in raid 1, ASRock X99 OC Formula, 16GB G.Skill Ripjaws 4 Series DDR4-2400, I7 5820K |
|
|
|
|
|
#18 |
|
Member
Iscritto dal: Mar 2008
Città: Albano Laziale
Messaggi: 49
|
Codice:
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int i,num,A[10];
float media;
do {
cout <<"\n inserisci num: ";
cin >> A[i];
}
while (num==0);
media+= A[i];
cout <<"\n la media e: "<<media;
system("PAUSE");
return EXIT_SUCCESS;
}
|
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Il vettore appunto non ti serve, guarda meglio
Prendi come buona abitudine di usare sempre i double al posto dei float. |
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Dec 2006
Città: Lodi
Messaggi: 588
|
Codice:
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int i,num,A[10];
float media;
do {
cout <<"\n inserisci num: ";
cin >> A[i];
}
while (num==0);
media+= A[i];
cout <<"\n la media e: "<<media;
system("PAUSE");
return EXIT_SUCCESS;
}
Se non riesci ad usare i vettori, usa variabile semplice. Questo boh...non riesco a commentartelo, è proprio sbagliato come logica.. EDIT: provo a rispiegarmi meglio... 1) che variabili ti servono? una che riceve i dati da input, una che ti somma tutti i numeri che inserisci, una che si incrementa ogni volta che inserisci un numero e infine la double per la media 2) quali istruzioni si devono ripetere e quindi devi inserire nel ciclo? inserire valore da input nell'apposita variabile, aggiornare la variabile di somma numeri (somma=somma+num), incrementare la variabile che ti indica quanti valori hai inserito (quindi quante volte hai ripetuto il ciclo) di 1 3) quale condizione devi verificare per far partire il ciclo? devi verificare che il numero che inserisci in input sia diverso da 0, non uguale 4) termina il ciclio ed ora? ora puoi finalmente trovare il risultato (media=somma_numeri / numero di cicli eseguiti)...ovviamente somma_numeri è la famosa variabile che ogni volta aggiorni (somma=somma+num), mentre numero di cicli eseguiti e preso dalla variabile che incrementi ad ogni ciclo (i++) BeLakor
__________________
HWBot - BeLakor Il mio PC: alimentatore LC POWER Arkangel 850Watt, scheda video Gigabyte GTX 970 4GB OC WF3, SSD Samsung 850 PRO, 2 Velociraptor 300 GB in raid 1, ASRock X99 OC Formula, 16GB G.Skill Ripjaws 4 Series DDR4-2400, I7 5820K Ultima modifica di BeLakor : 19-09-2008 alle 15:28. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:22.




















