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  

 
			
					
				
				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  

 
			
					
				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