PDA

Visualizza la versione completa : [C++] loop infinito...


AleX ZeTa
09-06-2004, 11:36
questa la mia main.cpp (o meglio, un pezzo, quello che non funziona). Se vado in esecuzione il programma parte e quando arriva a quel while va in ciclo infinito, senza aspettare i miei input (come vorrebbe quello scanf...)



int main(int argc, char *argv[])
{
KApplication a[5];
CFR *cfr = new CFR();
int exit = 0;
while (exit != 1) {
a[cWidget].setMainWidget(cfr);
cfr->show();
cout << "uscire? (0/1)" << endl;
scanf("%d", &exit);
}
cout << "uscire..." << endl;
getchar();

return(0);
}


come faccio a fargli aspettare il mio input?? O_o

thx
:ciauz:

AleX ZeTa
09-06-2004, 12:20
up... nessuno? -.-

cicciox80
09-06-2004, 13:06
Originariamente inviato da AleX ZeTa
up... nessuno? -.-

Il codice che hai inviato preso pari pari da quello che hai ? Cio hai fatto copia e incolla ?

In caso negativo, controlla se hai messo il punto e virgola tra la condizione del while e la parentesi graffa, cio se hai fatto cos:

while (exit != 1); {

A volte faccio quest'errore !
altrimenti non so, puoi darmi una breve descrizione delle istruzioni ? Non ne capisco molto di c++, ma vado alla grande con c (ad es. non so che vuol dire "<<")

:ciauz:

AleX ZeTa
09-06-2004, 13:19
il codice copia-incollato e il ; non c'.

cout << "..." ad un printf, mentre le altre istruzioni sono quelle per caricare un widget di QT... ma credo che il problema sia indipendente da queste

andrea_NET-_DSL
09-06-2004, 13:49
prova cosi'......


int main(int argc, char *argv[])
{
KApplication a[5];
CFR *cfr = new CFR();
int exit = 0;
while (exit != 1) {
a[cWidget].setMainWidget(cfr);
cfr->show();
cout << "uscire? (0/1)" << endl; /* al massimo sostituisci questo cout con printf("Uscire? (0/1) \n"); */

fflush(stdin);
scanf("%d", &exit);
}
cout << "uscire..." << endl;
getchar();

return(0);
}

ah poi ricorda che per uscire da quel while devi digitare 1 mentre per cotinuare ad eseguire il suo contenuto 0.
:ciauz:

ps altra cosa : xch mischi c e c++? :stordita:vedi cout e scanf.Non perch non si possa fare...ma non ne vedo il motivo :D

AleX ZeTa
09-06-2004, 13:55
niente nn va -.-

cmq la "confusione" fra C e C++ dovuta semplicemente al fatto che inizialmente avevo messo cin/cout... poi visto che non andava ho provato con scanf...

(continua a non permettermi di dare alcun input e va avanti all'infinito con "Uscire? (0/1)")

andrea_NET-_DSL
09-06-2004, 13:59
Originariamente inviato da AleX ZeTa
niente nn va -.-

cmq la "confusione" fra C e C++ dovuta semplicemente al fatto che inizialmente avevo messo cin/cout... poi visto che non andava ho provato con scanf...

(continua a non permettermi di dare alcun input e va avanti all'infinito con "Uscire? (0/1)")
prova con printf e scanf(come il commento che ti ho messo).

Ma il problema che ti stampa infinite volte il messaggio uscire?... ??

Azz ho trovato devi usare un do while non un while do...inizializzando exit a 0 non dovrebbe entrarti neanche nel while,perch la condizione non si verifica...prova cosi':


int main(int argc, char *argv[])
{
KApplication a[5];
CFR *cfr = new CFR();
int exit = 0;

do
{
a[cWidget].setMainWidget(cfr);
cfr->show();
cout << "uscire? (0/1)" << endl;
scanf("%d", &exit);
} while (exit != 1);
cout << "Sei uscito..." << endl;


getchar();
return(0);
}

AleX ZeTa
09-06-2004, 14:03
avevo gi provato... nulla -.-

andrea_NET-_DSL
09-06-2004, 14:04
Originariamente inviato da AleX ZeTa
avevo gi provato... nulla -.-
ho editato il post ...prova ;)

cosi',per vedere se sono le qt, fai questa prova..


int main(){
int exit = 0;
while ( exit != 1 ) {

printf(" Vuoi uscire ? 0 per continuare...per uscire 1 \n ");
scanf("%d",&exit);
}
printf("\n\nSEI USCITO\n");
getchar();
return 0;
}


ps se nonti v cosi'..dipende dalle QT :stordita:

:ciauz:

AleX ZeTa
09-06-2004, 14:06
ehm... neanche con do while va -.-

(ho tolto le istruzioni di QT -.-')

Loading