Salve a tutti,
ho iniziato da poco a studiare seriamente c++ con il libro Programming: Principles and Practice di Stroustrup. Uno dei tanti esercizi creati apposta un po' stupidi per far imparare al lettore è questo:
Stroustrup consiglia di aggiungere agli headers la linea:
inline void keep_window_open() { char=ch; cin>>ch; }
per far utilizzare keep_window_open() al posto di system("PAUSE")/getchar(). Non essendo una persona che usa ciò che non conosce, ho provato ad usare uno di questi ultimi due, il primo includendo cstdlib e il secondo conio.h(credo siano le librerie giuste).
Ci sono 2 problemi:
1. A quanto pare il programma funziona tranquillamente senza le due librerie, MA se toglo tutti gli headers l'editor mi segna system/getchar come errato(oltre agli altri comndi), ma solo, ripeto, se rimuovo tutti gli headers
2. Il comportamento di system("PAUSE") mi sembra alquanto imprevedibile, eseguendo un programma funziona, ma magari se lo modifico leggermente(ex tolgo l'ultimo '\n') mi dà "Premere un tasto per continuare" e POI l'ultimo comando(ex cout).
getchar() invece non funziona proprio in questo programma, in altri si.
Uso eclipse con MinGW, non avrei alcun problema a tornare a keep_window_open(), ma mi piacerebbe sapere perchè succede quel che succede.
ho iniziato da poco a studiare seriamente c++ con il libro Programming: Principles and Practice di Stroustrup. Uno dei tanti esercizi creati apposta un po' stupidi per far imparare al lettore è questo:
Codice:
#include <iostream>
#include <string>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;
//
int main()
{
string nome;
string friendName;
char friendSex;
int age=0;
cout<<"Inserire il nome della persona a cui si vuol scrivere: ";
cin>>nome;
cout<<"Dear "<<nome<<", \n";
cout<<" How are you?\nI'm fine. I miss you.\nInserire il nome di un altro/a amico/a: ";
cin>>friendName;
cout<<"Have you seen "<<friendName<<" lately?\nInserire il sesso dell'amico/a (m/f): ";
cin>>friendSex;
if(friendSex=='m')
cout<<"If you see "<<friendName<<" please ask him to call me.";
if(friendSex=='f')
cout<<"If you see "<<friendName<<" please ask her to call me.";
cout<<"\nInserire l'eta' del destinatario: ";
cin>>age;
if(age>0 && age<110)
cout<<"I heard you just had a birthday and you are "<<age<<" years old.\n";
else
cout<<"You're kidding!\n";
if(age<12)
cout<<"Next year you will be "<<age+1<<endl;
if(age==17)
cout<<"Next year you will be able to vote.\n";
if(age>70)
cout<<"I hope you are enjoying retirement.\n";
cout<<"Yours sincerely, __ Leonardo\n";
system("PAUSE");
return 0;
}
inline void keep_window_open() { char=ch; cin>>ch; }
per far utilizzare keep_window_open() al posto di system("PAUSE")/getchar(). Non essendo una persona che usa ciò che non conosce, ho provato ad usare uno di questi ultimi due, il primo includendo cstdlib e il secondo conio.h(credo siano le librerie giuste).
Ci sono 2 problemi:
1. A quanto pare il programma funziona tranquillamente senza le due librerie, MA se toglo tutti gli headers l'editor mi segna system/getchar come errato(oltre agli altri comndi), ma solo, ripeto, se rimuovo tutti gli headers
2. Il comportamento di system("PAUSE") mi sembra alquanto imprevedibile, eseguendo un programma funziona, ma magari se lo modifico leggermente(ex tolgo l'ultimo '\n') mi dà "Premere un tasto per continuare" e POI l'ultimo comando(ex cout).
getchar() invece non funziona proprio in questo programma, in altri si.
Uso eclipse con MinGW, non avrei alcun problema a tornare a keep_window_open(), ma mi piacerebbe sapere perchè succede quel che succede.