Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Hilfe beim Programmieren !

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
10.09.2008, 20:06 Uhr
alexus3591



Hallo,

ich weiss nicht ob ich hier richtig bin aber ich brauch dringend Hilfe.

Ich habe mich entschlossen später in die Spielebranche einzusteigen und so hab ich angefangen mit C++ zu programmieren.

Ich lerne es mit dem Buch von Dirk Louis Markt und Technik und bin jetzt ( erst) soweit, dass ich Programme schreiben soll, mit dem man Wurzeln berechnet.

Alles schön und gut ich habe den Quelltext genau so abgeschrieben wie im Buch, ABER bei mir schließt sich das Fenster immer wenn ich eine Zahl eingebe und Enter drücke!

Kann mir jemand helfen?

Hier ist der Quelltext:


// If Verzweigung

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
double eingabe;
double wurzel;

cout << " Programm zur Wurzelberechnung " << endl;

cout << " Geben Sie bitte eine Zahl ein: ";
cin >> eingabe;

if ( eingabe >= 0)

{ wurzel = sqrt (eingabe);
cout << " Wurzel von " << eingabe << " = "
<< wurzel << endl;
}

cout << endl;
cout << " Programm wird beendet.";

return 0;

}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.09.2008, 20:11 Uhr
CppProgrammer



Naja das ist so schon richtig, dass sich nach Durchlauf des Codes das Fenster schließt.
Schließlich wird es ja dann auch nicht mehr gebraucht, wenn das Programm schon beendet ist.

Wenn du das Fenster am Ende des Programms offen halten willst, startest du deine Anwendung entweder direkt aus der Entwicklungsumgebung, oder du ergänzt am Ende deines Codes noch entsprechendes, wie z.B.


C++:
cout << " Programm wird beendet.";
cin.ignore();


Dieser Post wurde am 10.09.2008 um 20:12 Uhr von CppProgrammer editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.09.2008, 20:16 Uhr
alexus3591



Ok danke für die Tipps aber es bringt irgendwie nichts

Wenn ich das Programm aus C++ selber starte und z.B eine 5 eingebe und Enter drücke schließt es sich wieder, genauso ist es wenn ich deinem Bsp nehme mit cin.ignore() !
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.09.2008, 21:19 Uhr
CppProgrammer



Dann versuchs mal mit getch() anstelle von cin.ignore().
Dazu musst du dann noch "conio.h" includen.


C++:
getch();

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
10.09.2008, 21:22 Uhr
alexus3591



ahh es geht endlich

Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
10.09.2008, 21:40 Uhr
0xdeadbeef
Gott
(Operator)


Der Grund für das Verhalten ist, dass nach dem Auslesen der Zahl noch Reste im Stream sind. Wenn du zum Beispiel 2 eingibst und Enter drückst, befindet sich in der Standardeingabe des Prozesses (std::cin) die Zeichenkette "2\n" (\n hier symbolisch für das newline-Zeichen).

C++:
cin >> eingabe;


liest die 2 da raus, lässt aber das newline stehen - es gehört ja nicht mehr zur Zahl. Es ist auch ganz gut, dass sich das so verhält, weil es für eine gewisse Orthogonalität sorgt - die Standardeingabe wird nicht anders behandelt als eine Datei, was sie ja unter vielen Umständen auch ist. Jedenfalls,

C++:
cin.ignore();


ignoriert dann ein Zeichen aus der Standardeingabe, also das newline-Zeichen, und weil es damit befriedigt ist, wartet es natürlich auch nicht mehr.

Es gibt verschiedene Wege, damit umzugehen. Ich verarbeite Eingaben, wenn ich Benutzereingaben auf der Konsole erwarte, zeilenweise (siehe www.fun-soft.de/showtopic.php?threadid=19851 ), andere benutzen nach jeder Eingabe

C++:
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');


um den Rest der Zeile zu ignorieren. Auf jeden Fall müssen die Reste aus dem Stream entfernt werden, bevor das Lesen aus std::cin auf neue Eingaben wartet.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: