Newsgroup: it.comp.lang.c++
Titolo: applicazione chiusa a fine esecuzione

ciao a tutti,
scusate per la domanda idiota...ma ho appena iniziato a studiare il
linguaggio C++ e finora programmavo in Pascal e Delphi. Sto creando delle
semplicissime (conversioni..ecc.) Console Application. Ho notato che il
programma viene eseguito correttamente ma viene terminato subito dopo
l'esecuzione dell'ultima istruzione impedendo quindi la visualizzazione dei
risultati delle operazioni....in Pascal bastava inserire un "readln;" alla
fine...ma in C++???
ciao!

Nel boschetto della mia fantasia c'č anche schumy83, che ha scritto:

usa questa funzione:
#include <iostream>
#include <climits>        /*serve per numeric_limits*/
using namespace std;
void pause() {
    cin.ignore(numeric_limits<streamsize>::max(), '\n');
    cout << "Premere INVIO per continuare..." << endl;
    while(cin.get() != '\n');
}
la prima riga della funzione (cin.ignore ecc...) serve a pulire il buffer di
cin da eventuali '\n' rimasti da input precedenti.
ovviamente la funzione va messa poco prima del return della main().
--
Lupin85Š
Azzurranet IRC: +#afiad, @#fils - ICQ: 91528290
Mail: Remove PAN to contact me
- "It is not important what you believe, only that you believe." -


Avevo 2 domande su sta cosa.....
1) come si fa a ripulire TUTTO il buffer di cin? Scusate se ho già
chiesto questa cosa in un altro thread, però ancora non trovo risposta....
2) perchè in generale si cerca sempre di evitare di usare system("PAUSE") di
cstdlib?
Grazie
Emanuele Di Saverio

mi da un paio di errori:
- `numeric_limits' undeclared (first use this function)
-(Each undeclared identifier is reported only once
- for each function it appears in.)
 parse error before `>'
 implicit declaration of function `int max(...)'
 parse error before `)'
Tutti alla riga 21 che č:
cin.ignore(numeric_limits<streamsize>::max(), '\n');
Ecco il listato completo:
#include <stdio.h>
#include <iostream.h>
#include <climits>
using namespace std;
 void pause();
int main(int argc, char *argv[])
{ int a;
  int b;
  cout << "Inserire a";
  cin >> a;
  cout << "Inserire b";
  cin >> b;
  cout << (a+b);
   pause();
  return 0;
}
void pause() {
    cin.ignore(numeric_limits<streamsize>::max(), '\n');
    cout << "Premere INVIO per continuare..." << endl;
    while(cin.get() != '\n');
}
Stranamente i libri che ho non si pongono nemmeno il problema della chiusura
dell'applicazione...come mai????
ciao!

 #include <climits>        /*serve per numeric_limits*/
*error*
l'header č <limits>, scusate.
--
Lupin85©


 dell'applicazione...come mai????
perché è un problema che dipende dal tuo sistema, e non dal linguaggio.
--
Lupin85©


 cstdlib?
perché non è una soluzione portabile, ed è dipendente dalla piattaforma.
--
Lupin85©


 chiusura dell'applicazione...come mai????
Perchè non è una cosa che c'entri col linguaggio. Ad esempio, se programmi 
da terminale unix non hai problemi di sorta. Se programmi da dos nemmeno. 
Se programmi da win o da X potresti averne. Ma qui è affar tuo, non del 
libro che non può ipotizzare in che ambiente sviluppi te.
-- 
Andrea Bergia - studente          Linux Registred User #281550
Per favore non mandatemi allegati in Word o PowerPoint.
Si veda 
http://www.fsf.org/philosophy/no-word-attachments.html


mi fa errore:
limits: No such file or directory
ciao!

 ciao!
immagino che tu utilizzi una vecchia versione del gcc.
aggiornalo alla 3.2 e riprova.
alcune vecchie versioni (non ricordo quali) non includono degli headers,
tra cui <limits>
se non hai voglia di aggiornare, includi <climits> e sostituisci INT_MAX a
numeric_limits<streamsize>::max()
in questo modo ignorerai un numero di caratteri '\n' abbastanza elevato.
dovresti essere tranquillo, non penso che il tuo programma abbia un numero
di
input maggiore di INT_MAX ;)
--
Lupin85Š


 aggiornalo alla 3.2 e riprova.
purtroppo all'università mi costringono ad usare DEV C++....ora provo...
ciao!

Nel boschetto della mia fantasia c'è anche schumy83, che ha scritto:

infatti
il dev-c++ si basa sul gcc
scarica il mingw 2.0.0.2, che contiene il gcc 3.2, e metti tutto nella
cartella del dev-c++
--
Lupin85©


cin da eventuali '\n' rimasti da input precedenti.
E se non ci sono input precedenti?
cin.ignore ... si blocca aspettando che tu prema un invio, quindi
compare la scritta "Premere INVIO per continuare", e quindi bisogna
premere invio un'altra volta... la seconda!
Come ovviare a questo?