PDA

View Full Version : [HELP] ciclo FOR in C++


folk3n
08-01-2006, 13:38
ciao a tutti, sottolineo da subito il fatto che sono un principiante alle prime armi con c++ ed è prorpio x questo che ho un problema da esporvi :D

devo scrivere un programmino che faccia questo:

"Redigere un programma che legga da input numeri interi non negativi fino a quando viene letto un numero negativo. A questo punto visualizzare la somma dei numeri non negativi."

io l'ho risolto così:

#include<iostream>
using namespace std;

int main(){
int n,x,y,risultato=0;
cout<<"inserire un numero intero (>0):";
cin>>n;
for(x=n;n>0;n--)
cout<<"inserire un numero intero:";
cin>>y;
risultato += y;
cout<<risultato;
system("pause");
return 0;
}

il problema è che non fa quello che deve fare!!! :cry: :muro:

ho anche la soluzione xò è con il WHILE invece che con il FOR ma io purtroppo ho bisogno di usare il FOR.
vi metto anche quella così capite meglio cosa deve fare il programma
eccola:

/*soluzione corretta:
#include <iostream>

using namespace std;

int main(){
int n, x, somma=0;
cout << "\nIntrodurre un numero intero (>0): ";
cin >> n;
while (n--)
{
cout << "Dammi un numero intero: ";
cin >> x;
somma += x;
}
cout << "La somma dei numeri introdotti e' " << somma << endl;
return 0;
}

:mc:
potete aiutarmi x favore...grazie mille in anticipo :help:

zerocool_pe
08-01-2006, 14:47
TE LO FACCIO DA CAPO CHE IL TUO NON VA PER NIENTE
#include <iostream>
#include <stdlib.h> //metticela sempre qst libreria
using namespace std;

int main()
{
int i,x,risultato;
risultato=0;
for (i=0;x>0;i++)
{
cout << "Inserisci un numero positivo" << endl;
cin >> x;
if (x>0)
{
risultato=risultato+x;
}
else
{
cout << "Hai inserito un numero negativo!!!" << endl;
}
}
cout << "Hai inserito " << i-1 << " numeri positivi" << endl;
cout << "La somma dei numeri positivi inseriti e: " << risultato << endl;
system ("PAUSE");
return 0;
}

shinya
08-01-2006, 16:07
#include <stdlib.h> //metticela sempre qst libreria


Meglio includere <cstdlib>. E' più C++oso :)

fgr
08-01-2006, 16:59
using namespace std;
cattiva tecnica C++: meglio non specificare spazi di nomi.
Usare:
using std::cout;
using std::cin;
ecc.


system ("PAUSE");

questo non e' portabile :)

folk3n
08-01-2006, 17:17
ok grazie x l'aiuto 1a sola cosa, è possibile farlo con il FOR decrementato invece che incrementato(come stavo provando a fare io nel mio tentativo :D )? :confused: :mc:

ps grazie dei consigli fgr, 1a cosa, non capisco cosa significhi portabile e cosa c sia di sbagliato in system("pause"); :D

ka0s
08-01-2006, 18:18
cattiva tecnica C++: meglio non specificare spazi di nomi.
Usare:
using std::cout;
using std::cin;
ecc.

Perchè la consideri una cattiva tecnica?
Dov'è lo svantaggio nell'usare il namespace std?

fgr
08-01-2006, 19:55
ps grazie dei consigli fgr, 1a cosa, non capisco cosa significhi portabile e cosa c sia di sbagliato in system("pause"); :D
per codice *portabile* si intende che lo stesso codice dovrebbe essere ricompilato su altri sistemi e/o piattaforme senza modifiche (magari cosi fosse).

system("pause") funziona su MS-DOS, Windows e basta.

fgr
08-01-2006, 20:04
Perchè la consideri una cattiva tecnica?
Dov'è lo svantaggio nell'usare il namespace std?
causa conflitti dei nomi nell'eventuale uso di altre librerie. Se queste possiedono nomi simili di funzioni e parametri.

Eventuali approfondimenti su questo e su moltri altri aspetti del C++ si trovano sul sito http://www.accu.org

zerocool_pe
08-01-2006, 22:57
Per la cronaca...se levi system pause non si blocca la finestra e non puoi vedere l'output prodotto...secondo..inserisci sempre namespace std; altrimenti quando usi stringhe di caratteri non vengono accettati gli spazi. Poi il programma come l'ho fatto è molto grezzo.puo essere ottimizzato e di molto ma non ho tempo di pensarci...devo stud per l'esame di informatica...cmq se avete altre soluzioni da postare sono felice di confrontarle con la mia...

kk3z
09-01-2006, 15:03
Per la cronaca...se levi system pause non si blocca la finestra e non puoi vedere l'output prodotto...

La stessa cosa ci può fare con getchar() senza aver problemi con la portabilità.

secondo..inserisci sempre namespace std; altrimenti quando usi stringhe di caratteri non vengono accettati gli spazi.

Eh? :mbe:

PS: Ma zitti... ma dove stiamo :O

ka0s
09-01-2006, 15:23
causa conflitti dei nomi nell'eventuale uso di altre librerie. Se queste possiedono nomi simili di funzioni e parametri.

Eventuali approfondimenti su questo e su moltri altri aspetti del C++ si trovano sul sito http://www.accu.org
ok grazie!

fgr
09-01-2006, 15:34
Per la cronaca...se levi system pause non si blocca la finestra e non puoi vedere l'output prodotto...
ma quale cronaca /sapietone/: se avvii il programma da una finestra DOS vedi l'output del tuo programma!!!


secondo..inserisci sempre namespace std; altrimenti quando usi stringhe di caratteri non vengono accettati gli spazi. Poi il programma come l'ho fatto è molto grezzo.puo essere ottimizzato e di molto ma non ho tempo di pensarci...devo stud per l'esame di informatica...cmq se avete altre soluzioni da postare sono felice di confrontarle con la mia...
su quale manuale l'hai letto? i guru del linguaggio raccomandano di non usare `using namespace std'! in ogni caso per le stringhe e` sufficiente `using std::string''.

p.s. sei libero di scriverer codice secondo i tuoi «standard»!!!

p.s.2 vedi di non essere scortese, nessuno ti ha chiamato in causa. Punto e taci! che modi sono?

fgr
09-01-2006, 15:38
PS: Ma zitti... ma dove stiamo :O
gia', noi siamo gentili, da dove sbuca fuori?

fgr
09-01-2006, 15:49
ok grazie!
su Usenet ho trovato qualcosa in italiano:
http://groups.google.it/group/it.comp.lang.c++/browse_thread/thread/b749f081788de3b7/8c0752121e342ddb?lnk=st&q=conflitti+using+namespace&rnum=2#8c0752121e342ddb
http://groups.google.it/group/it.comp.lang.c++/browse_thread/thread/30690822ac7eb19f/8d5b15e9f4d047a3?q=conflitti+spazi+nome&rnum=1#8d5b15e9f4d047a3

folk3n
09-01-2006, 16:27
grazie a tutti, mi avete dato degli ottimi suggerimenti, sia sul mio problema nello specifico, sia in generale per quanto riguarda la programmazione in c++!!!
grazie d nuovo :D :D :D