Torna indietro   Hardware Upgrade Forum > Software > Programmazione

OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro punta a diventare uno dei riferimenti assoluti nel segmento dei camera phone di fascia alta. Con un teleobiettivo Hasselblad da 200 MP, una batteria al silicio-carbonio da 7500 mAh e un display da 6,78 pollici con cornici ultra ridotte, il nuovo flagship non teme confronti con la concorrenza, e non solo nel comparto fotografico mobile. La dotazione tecnica include il processore MediaTek Dimensity 9500, certificazione IP69 e un sistema di ricarica rapida a 80W
DJI Romo, il robot aspirapolvere tutto trasparente
DJI Romo, il robot aspirapolvere tutto trasparente
Anche DJI entra nel panorama delle aziende che propongono una soluzione per la pulizia di casa, facendo leva sulla propria esperienza legata alla mappatura degli ambienti e all'evitamento di ostacoli maturata nel mondo dei droni. Romo è un robot preciso ed efficace, dal design decisamente originale e unico ma che richiede per questo un costo d'acquisto molto elevato
DJI Osmo Nano: la piccola fotocamera alla prova sul campo
DJI Osmo Nano: la piccola fotocamera alla prova sul campo
La nuova fotocamera compatta DJI spicca per l'abbinamento ideale tra le dimensioni ridotte e la qualità d'immagine. Può essere installata in punti di ripresa difficilmente utilizzabili con le tipiche action camera, grazie ad una struttura modulare con modulo ripresa e base con schermo che possono essere scollegati tra di loro. Un prodotto ideale per chi fa riprese sportive, da avere sempre tra le mani
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-09-2008, 14:12   #1
Davidino.gbr91
Member
 
L'Avatar di Davidino.gbr91
 
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
Davidino.gbr91 è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2008, 14:23   #2
banryu79
Senior Member
 
L'Avatar di banryu79
 
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.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2008, 14:24   #3
Davidino.gbr91
Member
 
L'Avatar di Davidino.gbr91
 
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
Davidino.gbr91 è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2008, 14:26   #4
BeLakor
Senior Member
 
Iscritto dal: Dec 2006
Città: Lodi
Messaggi: 588
Il ciclio do while funziona così:

Quote:
do
{
istruzioni
}
while (condizione);
(mi raccomando, ricordati il ; dopo la condizione che mi ha varie volte dato problemi... )

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
BeLakor è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2008, 14:28   #5
Davidino.gbr91
Member
 
L'Avatar di Davidino.gbr91
 
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?
Davidino.gbr91 è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2008, 14:30   #6
BeLakor
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
BeLakor è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2008, 14:31   #7
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da Davidino.gbr91 Guarda i messaggi
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
Sì scusa, ho editato il mio messaggio, avevo postato un po' in fretta
__________________

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)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2008, 14:33   #8
Davidino.gbr91
Member
 
L'Avatar di Davidino.gbr91
 
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!
Davidino.gbr91 è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2008, 14:37   #9
BeLakor
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
BeLakor è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2008, 14:39   #10
Davidino.gbr91
Member
 
L'Avatar di Davidino.gbr91
 
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
Davidino.gbr91 è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2008, 14:47   #11
BeLakor
Senior Member
 
Iscritto dal: Dec 2006
Città: Lodi
Messaggi: 588
Aggiungo dei commenti al tuo codice senza giudicare struttura...

Quote:
Originariamente inviato da Davidino.gbr91 Guarda i messaggi
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
int i=1,media,num; //dichiari 3 variabili integer (la media può avere la virgola), inizializzi i=1 (è sbagliato, il primo elemento di un vettore è nella posizione 0, non alla posizione 1), dichiarando "num" in questo modo non crei un vettore, ma una normale variabile
do {
cout <<"\n inserisci num: ";
cin >> num; //ma dove lo stai inserendo il numero? in una variabile normale? ogni volta sovrascrivi il valore precedente così...
i++; //cosa stai incrementando qui? incrementi la variabile i ma non la leggi da nessuna parte...
}
while (num=0); //fino a quando tu non inserisci il numero 0 il ciclo sopra non termina e nel momento in cui termina tu avrai proprio num=0
media = i/num; //il risultato di questa operazione non è possibile (non puoi dividere un numero per 0
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
Conclusioni: cercavi un'errorino? :P
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
BeLakor è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2008, 14:51   #12
Davidino.gbr91
Member
 
L'Avatar di Davidino.gbr91
 
Iscritto dal: Mar 2008
Città: Albano Laziale
Messaggi: 49
in questo esercizio non mi hanno richiesto l'uso di vettori altrimenti li dichiaravo
Davidino.gbr91 è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2008, 14:53   #13
Oceans11
Senior Member
 
L'Avatar di Oceans11
 
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!"
Oceans11 è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2008, 14:53   #14
BeLakor
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
BeLakor è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2008, 15:04   #15
Davidino.gbr91
Member
 
L'Avatar di Davidino.gbr91
 
Iscritto dal: Mar 2008
Città: Albano Laziale
Messaggi: 49
hai perfettamente ragione...
mi conviene la variabile...mi rimetto all'opera
Davidino.gbr91 è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2008, 15:07   #16
Oceans11
Senior Member
 
L'Avatar di Oceans11
 
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!"
Oceans11 è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2008, 15:16   #17
BeLakor
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
BeLakor è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2008, 15:17   #18
Davidino.gbr91
Member
 
L'Avatar di Davidino.gbr91
 
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;
}
per ora ho riformattato cosi
Davidino.gbr91 è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2008, 15:18   #19
cionci
Senior Member
 
L'Avatar di cionci
 
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 Inoltre quel codice non funziona.
Prendi come buona abitudine di usare sempre i double al posto dei float.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2008, 15:21   #20
BeLakor
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;
}
No no, non ci siamo
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.
BeLakor è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh OPPO Find X9 Pro: il camera phone con teleobiett...
DJI Romo, il robot aspirapolvere tutto trasparente DJI Romo, il robot aspirapolvere tutto trasparen...
DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
Oracle AI World 2025: l'IA cambia tutto, a partire dai dati Oracle AI World 2025: l'IA cambia tutto, a parti...
NVIDIA festeggia 25 anni in Corea: RTX 5...
Lucca Comics 2025: dal Giappone alla Fra...
Agli italiani non piace la fibra: costi ...
SK hynix: HBM, DRAM e NAND completamente...
Ring porta in Italia videocamere e video...
Windows 11 e 10: finalmente risolto il p...
TEE.fail è l'attacco che scardina...
Cameo fa causa a OpenAI: il nome del nos...
HyperOS 3 arriva anche su Xiaomi 15: int...
Telegram, Pavel Durov lancia Cocoon: l’i...
Dai suicidi ai nuovi limiti: Character.A...
Offerte Amazon per potenziare il PC: sup...
Toyota trasforma la sua auto più ...
Addio agli errori di Windows Update: l'u...
Nessuno vuole comprare iRobot: cosa succ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 14:22.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v