PDA

View Full Version : Problema dev c++


Psycho9
07-08-2006, 13:33
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

andbin
07-08-2006, 14:00
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.

71104
07-08-2006, 15:25
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:

k0nt3
07-08-2006, 19:12
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

ianaz
07-08-2006, 20:02
#include <conio.h>

e alla fine un

getch();

71104
07-08-2006, 20:27
http://www.forumeye.it/invision/style_emoticons/default/harakiri.gif
grazie :D

http://www.forumeye.it/invision/style_emoticons/default/harakiri.gif

Psycho9
08-08-2006, 13:27
Ragazzi ho trovato:

togliendo return0 alla fine e inserendo

cin.get();
cin.ignore();
}

compila ed esegue bene anche sotto windows. Che mi dite?

andbin
08-08-2006, 13:41
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.

andbin
11-08-2006, 11:22
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.

k0nt3
13-08-2006, 17:59
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

andbin
13-08-2006, 19:36
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

andbin
13-08-2006, 22:37
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

Psycho9
14-08-2006, 11:03
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.

Psycho9
16-08-2006, 07:44
SU :help:

Psycho9
16-08-2006, 08:17
Risolto. si salvavano i file in .c invece che .cpp