C++ und DOS

Algorithmus, Baumdurchlauf, Compiler, Interpreter...; Cobol, Pascal, C/C++, Java & Co.
Antworten
nachtacker
Forums-Profi
Forums-Profi
Beiträge: 63
Registriert: 01.12.08 23:40

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;
}
monday55
Forums-Profi
Forums-Profi
Beiträge: 158
Registriert: 27.06.08 10:08
Wohnort: Berlin
Kontaktdaten:

probiers doch mal mit


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

int main()
{
....
system("Pause"); // Pause vor Programmende return 0 von main()
return 0;
}
monday55
Forums-Profi
Forums-Profi
Beiträge: 158
Registriert: 27.06.08 10:08
Wohnort: Berlin
Kontaktdaten:

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
nachtacker
Forums-Profi
Forums-Profi
Beiträge: 63
Registriert: 01.12.08 23:40

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?
Timon
Forums-Scout
Forums-Scout
Beiträge: 319
Registriert: 09.03.08 08:40

#include <iostream>
using namespace std;

musst du auch beibehalten :D
B.Sc. Wirtschaftsinformatik
nachtacker
Forums-Profi
Forums-Profi
Beiträge: 63
Registriert: 01.12.08 23:40

Hi Timon,

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

Grüßle,
sandra
monday55
Forums-Profi
Forums-Profi
Beiträge: 158
Registriert: 27.06.08 10:08
Wohnort: Berlin
Kontaktdaten:

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;
}
Benutzeravatar
Chandini
Forums-Scout
Forums-Scout
Beiträge: 314
Registriert: 03.03.08 15:32
Wohnort: Feucht

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
Andere zu beherrschen, erfordert Kraft. Sich selbst zu beherrschen, erfordert Stärke.
Benutzeravatar
TheArchitect
Neues Mitglied
Neues Mitglied
Beiträge: 8
Registriert: 15.11.09 13:35
Wohnort: NRW (Germany)

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
Antworten