Seite 1 von 1

C++ und DOS

Verfasst: 02.01.10 22:41
von nachtacker
Hallo zusammen,

ich habe gehört, dass die C++ Hefte nicht so der Hit sein sollen und deshalb angefangen mit anderen Büchern mal langsam anzufangen und das ein oder andere einzutippen. Ich hab keine Ahnung von Nichts :)

Jedenfalls habe ich mir den Dev-C++ Compiler runtergeladen. Nach dem Compilieren bzw. beim Ausführen geht das DOS-Fenster immer gleich zu. Hier habe ich Abhilfe gefunden mit dem Ausdruck cin.get()

Bei folgender Programmierung nützt mir das aber nichts. Nach der Eingabe zweier Zahlen und Aktivierung der Enter-Taste, geht DOS zu. Was muss ich tun?

#include <iostream>
using namespace std;
int Add (int x, int y)
{

cout << "In Add(), erhalten " << x << " und " << y << "\n";
return (x+y);
}

int main ()
{
cout << "Ich bin im main()!\n";
int a, b, c;
cout << "Geben Sie zwei Zahlen ein: ";
cin >> a;
cin >> b;
cout << "\nAufruf von Add()\n";
c = Add(a,b);
cout << "\nZurueck in main().\n";
cout << "c wurde gesetzt auf " << c;
cout << "\nBeenden...\n\n";
return 0;
}

Verfasst: 03.01.10 22:58
von monday55
probiers doch mal mit


#include <stdlib.h> // notwendig für system()

int main()
{
....
system("Pause"); // Pause vor Programmende return 0 von main()
return 0;
}

Verfasst: 03.01.10 23:04
von monday55
ach und übrigens, ja die hefte sind jetzt nicht so der über knaller, ich würd sie aber nicht gleich zur seite legen ;) den ein oder anderen trick findest du darin auch, unter anderem beispiele wo dieses "system" regelmäßig verwendet wird ;)

viel erfolg

Verfasst: 03.01.10 23:38
von nachtacker
mit <stdlib.h> kennt er plötzlich cout und cin nicht mehr

"cout' undeclared (first use this function), (Each undeclared identifier is reported only once for each function it appears in.) "
"`cin' undeclared (first use this function) "

Ich hab die Hefte noch gar nicht. Klar werd ich sie durcharbeiten, nur hatte ich ein wenig Angst, dass ich mit lauter Cracks zusammenhock ( im Seminar) und nix blick...

Hast Du noch ne andere Idee?

Verfasst: 04.01.10 05:21
von Timon
#include <iostream>
using namespace std;

musst du auch beibehalten :D

Verfasst: 04.01.10 20:26
von nachtacker
Hi Timon,

danke, aber dann verschwindet das DOS Fenster wieder nach der Zahleneingabe. Was tun? Liegt vielleicht an irgendwelchen Einstellungen ?

Grüßle,
sandra

Verfasst: 05.01.10 08:02
von monday55
habs net getestet, aber ich kann mir nicht vorstellen das das nicht funktioniert ;) hier die variante mit zweimal pause, falls die erste durch irgendwelche komischen eingaben schon abgefackelt wird ;)
übrigens, wenn du ein cin machst und bei deiner eingabe mit leerzeichen arbeitest, dann erhälst du genau solche effekte da im puffer die mit leerzeichen getrennten strings gehalten werden ;)


#include <stdlib.h> // notwendig für system()
#include <iostream>
using namespace std;
int Add (int x, int y)
{

cout << "In Add(), erhalten " << x << " und " << y << "\n";
return (x+y);
}

int main ()
{
cout << "Ich bin im main()!\n";
int a, b, c;
cout << "Geben Sie zwei Zahlen ein: ";
cin >> a;
cin >> b;
cout << "\nAufruf von Add()\n";
c = Add(a,b);
cout << "\nZurueck in main().\n";
cout << "c wurde gesetzt auf " << c;
cout << "\nBeenden...\n\n";
system("Pause");
system("Pause");
return 0;
}

Verfasst: 05.01.10 08:59
von Chandini
Du brauchst am Ende auf jeden Fall das system("Pause"). Mit dem Vorschlag von monday55 sollte es damit auf jeden Fall klappen.

Nur wenn du dem Code sagst, er soll am Ende anhalten, tut er das auch. Wenn das fehlt, wird das Fenster immer geschlossen.
Das ist keine falsche Einstellung, sondern einfach das normale Verhalten des Programms :D

Optimale Lösung

Verfasst: 07.01.10 13:16
von TheArchitect
Die optimale Lösung (gemäß der Vorgabe) sieht wie folgt aus :

#include <iostream>
using namespace std;
int Add (int x, int y)
{
cout << "In Add(), erhalten " << x << " und " << y << "\n";
return (x+y);
}

int main ()
{
cout << "Ich bin im main()!\n";
int a, b, c;
cout << "Geben Sie zwei Zahlen ein: ";
cin >> a;
cin >> b;
cout << "\nAufruf von Add()\n";
c = Add(a,b);
cout << "\nZurueck in main().\n";
cout << "c wurde gesetzt auf " << c;
cout << "\nBeenden...\n\n";

cin.sync(); // Eingabepuffer leeren
cin.get(); // Auf beliebige Eingabe warten

return 0;
}

Bei dieser Lösung muss die Headerdatei "stdlib.h" nicht inkludiert werden und es erfolgt auch kein Systemaufruf.

Die letzten beiden Zeilen (vor dem Return) können immer verwendet werden um ein Schließen des DOS-Fenster's zu vermeiden.

mfg

TheArchitect