View Full Version : Problema dev c++
Ho un problema con questo compilatore che uso sotto windows xp. al momento dell'utilizzo anche di un banalissimo programma la console sparisce quando è il momento di buttare fuori un risultato.Cioè premo invio e la console si chiude. Mi è stato detto che per girare sotto windows ha bisogno di qualche stringa da aggiungere ma non ricordo.Ne sapete qualcosa? grazie
Ho un problema con questo compilatore che uso sotto windows xp. al momento dell'utilizzo anche di un banalissimo programma la console sparisce quando è il momento di buttare fuori un risultato.Cioè premo invio e la console si chiude. Mi è stato detto che per girare sotto windows ha bisogno di qualche stringa da aggiungere ma non ricordo.Ne sapete qualcosa? grazieQuesta questione salta fuori qualche milione di volte al mese ... :muro:
Il tuo programmino è una applicazione "console" e, presumo, il suo "ciclo" di vita è brevissimo perché magari fai solo dei calcoli e delle printf o roba del genere.
Il tuo ambiente di sviluppo (dev-c++) avvia il programma, che termina subito e quindi la console viene chiusa.
Hai 2 possibilità:
- Lanci il tuo programma da un prompt dei comandi già aperto (che è poi quello che si dovrebbe fare per usare delle applicazioni console).
- Metti alla fine del tuo programma una system("pause"); oppure una getchar(); in modo che aspetti un tasto prima di terminare.
non c'è una faccina che si fa harakiri?
scorpion89
07-08-2006, 18:35
non c'è una faccina che si fa harakiri?
http://img264.imageshack.us/img264/9421/imageshu6.jpg (http://imageshack.us)
:ciapet:
http://img264.imageshack.us/img264/9421/imageshu6.jpg (http://imageshack.us)
:ciapet:
http://www.forumeye.it/invision/style_emoticons/default/harakiri.gif :ciapet: :ciapet: :asd:
scorpion89
07-08-2006, 19:57
http://www.forumeye.it/invision/style_emoticons/default/harakiri.gif :ciapet: :ciapet: :asd:
Da aggiungere a quelle presenti nel sito!!! :D :D
#include <conio.h>
e alla fine un
getch();
http://www.forumeye.it/invision/style_emoticons/default/harakiri.gif
grazie :D
http://www.forumeye.it/invision/style_emoticons/default/harakiri.gif
Ragazzi ho trovato:
togliendo return0 alla fine e inserendo
cin.get();
cin.ignore();
}
compila ed esegue bene anche sotto windows. Che mi dite?
togliendo return0 alla fine e inserendo
cin.get();
cin.ignore();
}
compila ed esegue bene anche sotto windows. Che mi dite?Che il return <qualcosa>; devi abituarti a metterlo sempre alla fine del main! Non bastava poi un semplice e banale getchar() senza andare a prendere roba del C++???
http://www.forumeye.it/invision/style_emoticons/default/harakiri.gif
Vash1986
10-08-2006, 22:50
Che il return <qualcosa>; devi abituarti a metterlo sempre alla fine del main! Non bastava poi un semplice e banale getchar() senza andare a prendere roba del C++???
http://www.forumeye.it/invision/style_emoticons/default/harakiri.gif
No, se nel programma esegui più volte un input, devi mettere tanti getchar alla fine quanti sono gli "INVIO" che premi durante il programma, o almeno questo in windows.
Quindi, sempre parlando di windows, è quasi d'obbligo usare il system("pause"), a meno che non si usino compilatori come code::blocks che quando runni il programma ti mettono in automatico la pausa alla fine.
No, se nel programma esegui più volte un input, devi mettere tanti getchar alla fine quanti sono gli "INVIO" che premi durante il programma, o almeno questo in windows.No, chi l'ha detto??? Poi dipende da come hai gestito l'input (con quali funzioni di input, intendo). Non è che ti stai riferendo a quei programmi che utilizzano quella sottospecie di ciofeca di scanf??? :asd:
Quindi, sempre parlando di windows, è quasi d'obbligo usare il system("pause"), a meno che non si usino compilatori come code::blocks che quando runni il programma ti mettono in automatico la pausa alla fine.Per essere molto chiari una volta x tutte. La questione del attendere un tasto alla fine del programma è solo per quei programmatori principianti che con il loro bel IDE fanno applicazioni "console" e poi schiacciano il tastino per avviare il programma e si accorgono che quest'ultimo, subito (o eventualmente dopo l'ultimo input se c'è), termina e la console sparisce immediatamente ...
Le applicazioni "console", quelle serie almeno, non hanno di certo l'attesa finale di un tasto.
perchè così vuole lo standard ;) altrimenti il tuo codice è potenzialmente incompatibile con altri compilatori
Vash1986
13-08-2006, 19:04
No, chi l'ha detto??? Poi dipende da come hai gestito l'input (con quali funzioni di input, intendo). Non è che ti stai riferendo a quei programmi che utilizzano quella sottospecie di ciofeca di scanf??? :asd:
Proprio la scanf appunto :D
Proprio la scanf appunto :DLa scanf è afflitta da diversi problemi ... io l'ho sempre evitata. ;)
Vash1986
13-08-2006, 20:43
La scanf è afflitta da diversi problemi ... io l'ho sempre evitata. ;)
E' possibile evitarla senza ricorrere alle librerie del C++?
Se si, mi farebbe piacere sapere come :D
E' possibile evitarla senza ricorrere alle librerie del C++?
Se si, mi farebbe piacere sapere come :DSì, certo.
Esempio:
int a, b;
scanf ("%d", &a);
scanf ("%d", &b);Questo codice sembrerebbe ok ... finché inserisci solo i caratteri richiesti dal %d, cioè delle cifre numeriche. Se invece, ad esempio, inserisci una 'a', fallisce sia la prima scanf ma anche -sorpresa- la seconda scanf. Il problema è che la 'a' viene scartata e fa terminare l'input ma rimane nel buffer di input.
Soluzione: rimpiazzare scanf/fscanf con l'accoppiata fgets+sscanf.
Esempio:
int a, b;
fgets (s, sizeof (s), stdin);
sscanf (s, "%d", &a);
fgets (s, sizeof (s), stdin);
sscanf (s, "%d", &b);
Vash1986
13-08-2006, 23:45
oh cielo... quanto spreco di battitura e tempo, mi sa che è ora di cominciare a usare cin e cout :p
Ragazzi scusate un altro problema:
ho dei programmini banali uno è questo:
#include <iostream.h>
#include<conio.h>
int main (){
float a,b,max;
cout<<"inserire i valori di a e b"<<endl;
cin>>a>>b;
cout<<"a = "<<a<<" b = "<<b<<endl;
if(a>b)
max=a;
else max=b;
cout<<"valore del massimo = "<<max<<endl;
getch();
return 0;
}
L'altro è questo :
#include <iostream.h>
#include<conio.h>
int main(){//stampa dei numeri dispari compresi tra n e m
int i,n,m;
cout<<"inserire due numeri naturali con n<=m \n"<<endl;
cin>>n>>m;
//controllo sulla coerenza dei dati di ingresso
if((n<=0) || (m<=0) || (n>m))
cout<<"dati errati\n";
else {
cout<<"stampa dei numeri dispari compresi tra "<<n<<" e "<<m<<endl;
//se n e' pari si parte da n+1
if(n%2 == 0) //n%2 resto della divisione n/2
i=n+1;
else i=n;
//fine if
while(i<=m){
cout<<i<<endl;
i=i+2;
}//fine while
}//fine else
getch();
return 0;
}
ora grazie ai vostri consigli compilano ed eseguono anche in windows ma il fatto è che se compilo il primo quello del massimo tutte le volte che voglio lo esegue.Gli altri qualsiasi altri scritti correttamente,mi danno errore sulla prima riga dove c'è un'operazione di uscita (cout).E non esce la console di conseguenza.
Risolto. si salvavano i file in .c invece che .cpp
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.