durch <esc> taste konsole schliesen



  • hi ich wuerde gern mal wissen wie man mit der <esc> taste die konsole schließen kann. bin noch ein ziemlicher c++ anfaenger
    hier ist mal ein bsp von mir

    do
        {
        cout<< //irgendwas
        cin>>  //irgenwas
        switch(abfrage)
        {
        case 'm':
    
                  //irgenwas
                  break;
    
        case 'd':
    
                  //irgendwas
                  break;
        }
        }
        while(abfrage!=27);
    

    mit m und d ruft man eine funktion auf und mit <esc> soll man abbrechen koennen weiss nur nicht wie???

    mfg



  • Zu solchen Fragen schaust am Besten mal in die Konsolen FAQ hier im Forum, ich bin mir ziemlich sicher dass dort eine Antwort zu finden ist 😉



  • Über cin kannst du keine Sonderzeichen wie ESC oder Cursortasten abfangen - da mußt du schon auf systemspezifische Funktionen zugreifen (Funktionsbeispiele findest du in der Konsolen-FAQ).



  • gut alles klar ich werd mal in der konsolen faq nachsehn

    so ich hab was gefunden, startet auch aber nach der ersten abfrage rechnet er wie ein blöder und macht nicht weiter

    char abfrage;
        bool exit=false;
        while(!exit)
        {
                  if(kbhit())
                  {
                          char c=getch();   
                  }
        }
    

    achso hab noch #include<conio.h> includiert



  • Ist ja auch eine Endlosschleifen, weil "exit" niemals true wird.



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum DOS und Win32-Konsole verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • gut ich hab es jetzt hin bekommen...

    char abfrage;
        int i;   
        do
        {     
              cout<<"m --> multiplizieren"<<endl<<"d --> dividieren"<<endl<<"<ESC> --> beenden"<<endl<<endl;
              char x;
               while(true)
               {
                   if(kbhit())
                   {
                              x = getch();
                              i = (int)x; 
                              if ( i == 27)
                              {
                                        exit(-1);
                              }
                              else
                              {
                                  break;
                                  }
    
                   }
    

    hat auch noch nen netten neben effekt das man nach m und d nicht mehr mit enter bestaetigen muss 🙂



  • Wenn du ne Loop in deinem Programm hast benutz einfach die Winapi , den Befehl GetKeyState(Deine Taste) ..weis aber nicht genau ob ich den Befehl richtig geschrieben hab müsstest du eventuell nachschaun in der Winapi ..

    MFG Toa



  • Hay, bin totaler anfänger in c/c++
    dennoch möchte ich ein ähnliches programm schreiben, das mit escape terminiert
    mein syntax is in ordnung, jedoch sagt er mir, dass exit (von beispiel oben)
    nicht deklariert ist,
    brauch ich noch ne andere bibliothek ausser stdio.h?
    wenn ich das nämlich geschafft hab, is das progrämmchen fertig.

    2.Frage
    kann mir jemand mal n anstoß geben, wie man mit beliebig vielen zahlen in C/C++ rechnet, zb. dass es egal ist wieviel zahlen ich eingebe , und diese dann multipliziert oder sonstwas werden?
    ich muss bis jetzt immer festlegen wieviel zahlen es sein dürfen, das macht unheimlich viel mühe. Und dann muss man diese entsprechende Anzahl auch nutzen
    bissl doof, ich denk das geht besser.
    Ich wär auch zufrieden mit dem progrämmchen, wenns nicht ginge(was ich mir nicht vorstellen kann).

    das is das programm woum's geht, um's zu veranschaulichen, is dasselbe wie mit der esc terminierung(funzt imma noch nich)

    #include <stdio.h>

    main()
    {
    float n1,n2,n3,n4;
    double erg;
    int i,k;
    char f;
    i=2;
    printf("Hallo und herzlich Willkommen\nzum Durchschnittsrechner fuer Schulnoten\nFuer 4 Schulnoten\n\n");
    getchar();
    while (i==2)
    {

    printf ("Eingeben von 4 Schulnoten bitte \n");
    scanf ("%f",&n1);

    scanf ("%f",&n2);

    scanf ("%f",&n3);

    scanf ("%f",&n4);

    printf ("\n");

    if (n1<=6&&n2<=6&&n3<=6&&n4<=6&&n1>=1&&n2>=1&&n3>=1&&n4>=1)
    {
    erg=(n1+n2+n3+n4)/(n1/n1+n2/n2+n3/n3+n4/n4);
    printf ("%.2f \n\n",erg);

    }

    if (n1>6||n2>6||n3>6||n4>6||n1<1||n2<1||n3<1||n4<1)
    {
    printf("Ungueltige Noteneingabe\n\n");

    }
    f=getchar();
    f=getchar();
    k=(int)f;
    if (k==27)
    exit(-1);
    else
    break;
    }

    return 0;
    }



  • Hi,

    Zu 1: Inkludiere noch die stdlib.h
    Zu 2: Hier ein Beispiel wie das in C++ aussehen würde:

    #include <iostream>
    #include <list>
    
    typedef std::list<int> intList;
    
    int main() {
    	while (true)
    	{
    		intList ints;
    		while (true) {
    			int zahl = 0;
    			std::cout << "Zahl(0 = Abbrechen): ";
    			std::cin >> zahl;
    			if (zahl == 0) break;
    			ints.push_back(zahl);
    		}
    		std::cout << "\n";
    		int sum = 0;
    		for (intList::iterator it = ints.begin(); it != ints.end(); ++it) {
    			sum += (*it);
    			std::cout << sum << " + " << (*it) << " = " << sum << "\n";
    		}
    
    		if (!ints.empty()) {
    			std::cout << "\n=== Aufsummiert: " << sum << ", Durchschnitt: " << sum/ints.size() << " ===\n\n";
    		} else {
    			std::cout << "=== Es wurde keine (gueltige) Eingabe gemacht ===\n\n";
    		}
    	}
    
    	return 0;
    }
    

    Jedoch sieht dein Code eher nach C aus, und da müsstest du dich mit malloc usw... rumschlagen. Solltest du also die Wahl zwischen C und C++ haben würde ich dir eher zu C++ raten.

    Viele Grüße,
    Patrick



  • Also zu 1.
    funzt nich, bzw beendet mir selbst nach einem enter, wär ja schon ein gewisser erfolg, jedoch muss ich das auch noch mit enter bestätigen

    funktion ausgeführt,
    schleifenende
    entergedrückt:

    Press any key to continue

    zu 2.
    ich hab leide keine wahl zwischen c/c++
    schulbedingt,
    im nächsten jahr kommt c++

    nochmal zusammengefasst:
    Problem Nr.1: Programm mit ESC terminieren(würd mir schon reichen wenn ers nur liest, die funktion könnte/hab ich selber)
    alle tasten liest er mir, auch enter, aber BS und ESC usw. nicht

    Probem nr. 2
    Ich möchte beliebig viele zahlen nacheinander eingeben, und mit einer bestimmten taste, sollen sie verwendet werden, bzw die funktion aktiviert werden.
    zb.
    man gebe ein
    5
    6
    3
    [Enter]
    funktion: multiplizieren
    [ergebnis]
    90

    aber auch ebenso
    zb 4 oder beliebig viele zahlen
    2
    4
    1
    3
    5
    [Enter]
    funktion: multiplizieren
    [ergebnis]
    120

    usw.

    ich danke dir
    [Dummie]
    dass du dir so viel mühe mit dem quelltext gemacht hast. 👍
    c++ brauch ich nächstes schuljahr
    thx and see ya


Anmelden zum Antworten