PDA

View Full Version : POSSIBILE CHE NESSUNO MI SA RISPONEDERE?EPPURE SONO CAVOLATE


leomeya
22-06-2003, 12:09
sto iniziando a conoscere il C++
esempio questo:
#include <iostream.h>
void main ()
{
int a,n;
cin>>n;
while(n--)
cout<<'*';
cin>>a;
}
se n è minore di zero va in loop e mi torna ma se n è meggiore di zero perche' non va in loop?
eppure se inserisco 5 lo dovrebbe decrementare fino a meno infinito giusto? perche' si ferma a zero?

PGI
22-06-2003, 13:49
Ho iniziato anch'io da poco, ma se non sbaglio in C/C++ 0 (zero) corrisponde a "falso" e il ciclo while(int) è "infinito" solo se "int" è sempre "true", cioè diverso da 0.

Pertanto quando diventa while(0) si ferma.

Ciao.

leomeya
22-06-2003, 13:51
cazzo hai proprio ragione il ciclo while continua finche' la condizione è verificata e quando arriva a zero che è uguale a falso stacca!a volte mi perdo in cazzate!grazie mille ;)

leomeya
22-06-2003, 14:10
chiede in ingresso alcuni spazi seguiti da una lettera e dice quanti spazi hai inserito pero' dice sempre zero spazi perche?
dve ho sbagliato?


#include <iostream.h>
void main ()
{
int a,c;
char b,d;
c=0;
cout << "Inserisci quanti spazi vuoi seguiti da un carattere!" <<'\n';
cin >> d;
cin.get(b);
while (b==' ')
{c++;cin.get(b);}
cout << "Hai inserito " <<c<<" spazi"<<'\n';
cin >> a;
}

leomeya
22-06-2003, 19:12
possibile che nessuno mi sappia dire dove sbaglio in questa cazzatina di programma?

soalle
22-06-2003, 20:37
non conosco gli stream in c (mannaggia mia!!!) però potrebbe essere perché d l'hai dichiarato come carattere e non come array di caratteri....

Xavio
23-06-2003, 08:14
Originally posted by "leomeya"

sto iniziando a conoscere il C++
cin>>n;


Cmq il cin legge stringhe...

Dovresti usare

cin.get(n);

Spero sia così, altrimenti

n=getch();

Il problema è che è un pò che non programmo

Stai attento, se scrivi da tastiera il numero 5 non prende 5 ma il codice ASCII del 5, fa un cast implicito da char a int ;)




Ciao
Xavio

Xavio
23-06-2003, 08:17
se n è minore di zero va in loop e mi torna ma se n è meggiore di zero perche' non va in loop?

Se n è maggiore di zero dovrebbe andare in loop fino a che non diventa zero ma stai attento ad usare un cin normale per leggere gli interi (leggi il post prima...)


eppure se inserisco 5 lo dovrebbe decrementare fino a meno infinito giusto? perche' si ferma a zero?


Leggi il post precedente...




Ciao
Xavio

cionci
23-06-2003, 08:28
Originally posted by "leomeya"

possibile che nessuno mi sappia dire dove sbaglio in questa cazzatina di programma?
E' tutt'altro che una cazzatina... Con gli stream quelle cose si fanno male... Infatti gli spazi in testa all'inzio della riga vengono ignorati...

Prova a scrivere come input diversi spazi seguiti da un carattere, diversi spazi e un'altro carattere e vedrai che ti conta quelli fra i due caratteri...

leomeya
23-06-2003, 10:11
grazie mille provo seguendo i vostri consigli vi faccio risapere

cionci
23-06-2003, 10:25
getch non è una funzione standard ;) Quindi se hai un compilatore GCC non la puoi usare...