Wie kann ich ein Programm mit ESC-taste unterbrechen oder beenden?

Liebe/-r Experte/-in,
Guten Tag
Ich bin C++ Anfänger…ich will das Programm mit ESC-taste unterbrechen…weiß leider nur nicht wie…es soll mit do while Befehl gehen…kann jemand mir netterweise schreiben wie es geht…hier das Programm



#include
#include
using namespace std;
int main ( )

{

int frage,x,y,ergeb;

anfang:
srand(time(NULL));
x=rand()%10+1;
y=rand()%10+1;
ergeb=x*y;

fragen:

cout >frage;

if (frage==ergeb)
{
cout

Hi

so geht das:

while(getch()!= 0x1b)
{
auszuführende Programmschleife
};

Gruß

Crush

C++ erkennt kein Hardware, das ist alles Plattform-spezifisch :frowning:

Man kann ja zum C gehen: In den Header…

#ifdef __cplusplus
extern „C“ {
#endif
#include

… dann „Ihre“ stdio anschauen, auf der Suche nach C-Funktionen wie kbhit() („key has been hit“), getch() („was wurde gedruckt“) und die Konstanten, die in stdio.h definiert sind.

z.B. so was wie…

char keypress;
while (!kbhit() || ( (keypress=(char)getch()) != ESC_KEY)
{
// Weiter schwimmen, weiter schwimmen…
}

// Esc wurde gedruckt!

Hallo!
Als erstes musst du ganz dringend von dem „GOTO“-Ansatz
weg. Der GOTO-Befehl ist ein Relikt aus „Assembler“-
Zeiten und etwas grössere Programme mit GOTO-Einsatz
werden sehr schnell unübersichtlich.

Wie du bereits erwähnt hast ist es mit einer Do-While
Schleife übersichtlicher. Allerdings muss man das
Programm etwas umstricken (s.u.).
Um jetzt mit der Escape Taste das Programm zu beenden
gibt es beispielsweile den Befehl „getch()“. Und mit
dem Befehl „kbhit()“ überprüfst du ob eine Taste
gedrückt wurde.
Übrigens der Tastendruck der Escape Taste erzeugt den
Asscii Code 27 der von „getch()“ zurück gegeben wird.

#include
#include
#include
using namespace std;
int main ( ) {
int frage,x,y,ergeb;
char taste;

anfang:
srand(time(NULL));
x=rand()%10+1;
y=rand()%10+1;
ergeb=x*y;

do {

fragen:
cout >frage;

if (frage==ergeb) {
cout

Falls du noch keine Antwort erhalten hast:

mein Vorschlag lautet:

Laß das Programm beenden, wenn der Anwender eine Zahl >frage;
einfach diese Zeile ein:
if (frage

Hallo AlanAnto

sorry für die späte Antwort - hab über Ostern keine E-Mail gelesen …

Die ESC-Taste kann man mit C+±Mitteln nicht so einfach abfragen, ESC wird gesondert ausgewertet.
Aber mit den guten alten C-Funktionen aus conio.h geht es:

#include „conio.h“
#include
using namespace std;

int main(int argc, char* argv[])
{
cout 27
int ch;
do {
ch = _getch();
// mal testweise ausgeben
cout

moin
da gibt es ungezählte möglichkeiten…
bei deinem programm soltest du mal prüfen, ob cin die eingabe als tastaturscancode zur verfügung stellt (als attribut?). dann brauchst du bei der eingabe nur auf den scancode von esc prüfen und könntest dann ggf. mit exit oder return das programm beenden.
gruß
adi

Hallo.

Unter Windows 7 wird ESC nicht an das Programm weitergegeben, sondern löscht nur die Eingabe. Anscheinend unter W2k auch, hab aber zur Zeit keinen Compiler unter W2k. Unter Linux geht das auch mit ESC.

Ich hab Dein Programm ein wenig umgeschrieben. Jetzt bricht es mit jedem Zeichen ab, das sich nicht zu einem Integer umwandeln lässt und kein WhiteSpace ist.

#include 
#include 
#include 
#include 

using namespace std;

int main(int argc, char \*argv[])
{

 int frage,x,y,ergeb;

 srand(time(NULL));
 x=rand()%10+1;
 y=rand()%10+1;
 ergeb=x\*y;

 cout \>frage) {
 if (frage == ergeb) {
 cout

Zum Thema GOTO: grauslich!!! Du solltest mal unter Wikipedia Struktogramm nachschlagen.

mfg
Gert