View Full Version : [HELP] ciclo FOR in C++
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;
}
#include <stdlib.h> //metticela sempre qst libreria
Meglio includere <cstdlib>. E' più C++oso :)
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 :)
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
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?
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.
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...
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
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!
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?
PS: Ma zitti... ma dove stiamo :O
gia', noi siamo gentili, da dove sbuca fuori?
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
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
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.