<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Problem mit jumpen]]></title><description><![CDATA[<p>Hallo!</p>
<p>Also mein Wunsch ist es ein simples Konsolenfenster zu machen, dass + - * : rechnen kann.<br />
Wenn man irgendwas falsches eintippt, bekommt man eine Message und jumpt zurück.<br />
Nun das Problem ist, dass er wenn ich bei Zahlen z.B. einen Buchstaben eintippe, gibt er unendlich Fehlertexte aus und springt scheinbar zurück und wieder hin gibt Message aus und dann wieder zurück usw.. Bei den Menus geht's aber<br />
Ich komm einfach net mehr weiter und hoffe das ihr mir helfen könnt.<br />
Also keine eintippfehler machbar und hier ist der Code:</p>
<p>P.S.: Das sind nur 2/10 des Codes also so stark wie möglich reduziert um hier die Fehler korrekt zu schildern..</p>
<pre><code>#include &lt;iostream&gt; 
#include &lt;conio.h&gt; 
#include &lt;windows.h&gt; 
using namespace std; 

void wait() 
{ 
    FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)); 
    getch(); 
} 

int main () 
{ 
   // Überschrift und Versionsnummer 
   cout &lt;&lt; &quot;!Taschenrechner 1.0 von Darthshoot!\n\n&quot;; 
   // Instruktionen zum Bedienen vom Taschenrechner 
   cout &lt;&lt; &quot;Addieren '+' Subtrahieren '-' Multiplizieren '*' Dividieren ':'\n\n&quot;; 

   // Einzugebende Zahlen 
   int Zahl1; 
   int Zahl2; 
   int Zahl3; 

   /* Ergebnisse die im INT gespeichert werden.. 
   Dank neuem Verfahren spare ich 
   mir 9 Ergebnisse (+= usw.) */ 
   int Ergebnis; 

   // Speicher von den Zeichen 
   char chZeichen1; 
   char chZeichen2; 

   // Bestimmt ob weiter gemacht wird oder beendet 
   char go_or_end1; 
   char go_or_end2; 

   // Beginn der Eingabe 
Zahlen_Eingabe1: 
   cout &lt;&lt; &quot;Zahl1: &quot;; 
   cin  &gt;&gt; Zahl1; 

   /* Ahh da fällt mir noch ein, 
   dass man die Zahlen auf fehlerhafte 
   Eingaben überprüfen muss! */ 
   switch (Zahl1) 
   { 
   case ('a'): 
   case ('b'): 
   case ('c'): 
   case ('d'): 
   case ('e'): 
   case ('f'): 
   case ('g'): 
   case ('h'): 
   case ('i'): 
   case ('j'): 
   case ('k'): 
   case ('l'): 
   case ('m'): 
   case ('n'): 
   case ('o'): 
   case ('p'): 
   case ('q'): 
   case ('r'): 
   case ('s'): 
   case ('t'): 
   case ('u'): 
   case ('v'): 
   case ('w'): 
   case ('x'): 
   case ('y'): 
   case ('z'): 
   // Erweiterte Zeichen bei deutschen Keyboards 
   case ('ö'): 
   case ('ü'): 
   case ('ä'): 
      { 
         cout &lt;&lt; &quot;Falsche Eingabe der Zahl!\n&quot;; 
         // Neu eingeben... 
         goto Zahlen_Eingabe1; 
      } break; 
   } 

   /* Hier her wird gesprungen wenn Zahl1 richtig war, 
   oder Zeichen1 falsch..diese Art der Kommentierung 
   sieht ziemlich smart aus :-) */ 
   Zeichen_Pruefung1: 
   cout &lt;&lt; &quot;+ - * : --&gt; &quot;; 
   cin  &gt;&gt; chZeichen1; 

   // Prüft jetzt ob die Eingabe falsch war 
   switch (chZeichen1) 
   { 
   case ('+'): 
   case ('-'): 
   case ('*'): 
   case (':'): 
      { 
         // Wenn richtig dann zu Zahl2 gehen 
         goto Zahlen_Eingabe2; 
      } break; 
   default: 
      { 
         /* Er sollte ne Message rausgeben, 
         wenn etwas net gestimmt hat und zurück springen */ 
         cout &lt;&lt; &quot;Falsche Eingabe der Rechenzeichen!\n&quot;; 
         goto Zeichen_Pruefung1; 
      } 
   } 

      // Beginn der Eingabe 
Zahlen_Eingabe2: 
   cout &lt;&lt; &quot;Zahl2: &quot;; 
   cin  &gt;&gt; Zahl2; 

   /* Ahh da fällt mir noch ein, 
   dass man die Zahlen auf fehlerhafte 
   Eingaben überprüfen muss! */ 
   switch (Zahl2) 
   { 
   case ('a'): 
   case ('b'): 
   case ('c'): 
   case ('d'): 
   case ('e'): 
   case ('f'): 
   case ('g'): 
   case ('h'): 
   case ('i'): 
   case ('j'): 
   case ('k'): 
   case ('l'): 
   case ('m'): 
   case ('n'): 
   case ('o'): 
   case ('p'): 
   case ('q'): 
   case ('r'): 
   case ('s'): 
   case ('t'): 
   case ('u'): 
   case ('v'): 
   case ('w'): 
   case ('x'): 
   case ('y'): 
   case ('z'): 
   // Erweiterte Zeichen bei deutschen Keyboards 
   case ('ö'): 
   case ('ü'): 
   case ('ä'): 
      { 
         cout &lt;&lt; &quot;Falsche Eingabe der Zahl!\n&quot;; 
         // Neu eingeben... 
         goto Zahlen_Eingabe2; 
      } break; 
   } 

   // Hier wird bestimmt, ob man + - * oder : genommen hat oder was anderes 
   switch (chZeichen1) 
   { 
      // War es Plus? 
   case ('+'): 
      { 
         // Manmanman... ganz schön klever 
         Ergebnis = Zahl1 + Zahl2; 
         cout &lt;&lt; &quot;1. Das Ergebnis lautet --&gt; &quot; &lt;&lt; Ergebnis &lt;&lt; endl; 
      } break; 
      // War es Minus? 
   case ('-'): 
      { 
         // Jetzt wird minus gerechnet 
         Ergebnis = Zahl1 - Zahl2; 
         cout &lt;&lt; &quot;1. Das Ergebnis lautet --&gt; &quot; &lt;&lt; Ergebnis &lt;&lt; endl; 
      } break; 
      // War es Plus? 
   case ('*'): 
      { 
         // Hmmm das multiplizieren ist einfach 
         Ergebnis = Zahl1 * Zahl2; 
         cout &lt;&lt; &quot;1. Das Ergebnis lautet --&gt; &quot; &lt;&lt; Ergebnis &lt;&lt; endl; 
      } break; 
      // Und jetzt nur noch dividieren 
   case (':'): 
      { 
         // Jetzt wird minus gerechnet 
         Ergebnis = Zahl1 / Zahl2; 
         cout &lt;&lt; &quot;1. Das Ergebnis lautet --&gt; &quot; &lt;&lt; Ergebnis &lt;&lt; endl; 
      } break; 
   } 

Menu1: 
   // Mini-Menu mit 2 Optionen 
   cout &lt;&lt; &quot;(w)eiter (b)eenden\n&quot;; 
   cin  &gt;&gt; go_or_end1; 

   /* So jetzt kommt der Switch für Beenden oder weiter machen.. 
   Ich hoffe mal, dass es auch klappt! */ 
   switch (go_or_end1) 
   { 
   case ('W'): 
   case ('w'): 
      { 
         goto Zeichen_Pruefung2; 
      } break; 
   case ('B'): 
   case ('b'): 
      { 
         // Hier springt er zum Schluss des Programms 
         goto Beenden_vom_Programm; 
      } 
   default: 
      { 
         // Immer wieder der Mist mit den falschen Eingaben... 
         cout &lt;&lt; &quot;Falsche Eingabe bei den Optionen!\n&quot;; 
         goto Menu1; 
      } 
   } 

   /* So hier ist der erste Abschnitt zu ende... 
   Jetzt kommt die dritte Zahl und eine kleine 
   Modifikation vom Script, da es leider mit 
   normalem Kopieren nicht geht... */ 

   /* Hier her wird gesprungen wenn Zahl1 richtig war, 
   oder Zeichen1 falsch..diese Art der Kommentierung 
   sieht ziemlich smart aus :-) */ 
Zeichen_Pruefung2: 
   cout &lt;&lt; &quot;+ - * : --&gt; &quot;; 
   cin  &gt;&gt; chZeichen2; 

   // Prüft jetzt ob die Eingabe falsch war 
   switch (chZeichen2) 
   { 
   case ('+'): 
   case ('-'): 
   case ('*'): 
   case (':'): 
      { 
         // Wenn richtig dann zu Zahl2 gehen 
         goto Zahlen_Eingabe3; 
      } break; 
   default: 
      { 
         /* Wenn etwas net gestimmt hat, 
         sollte er ne Message rausgeben und zurück springen */ 
         cout &lt;&lt; &quot;Falsche Eingabe der Rechenzeichen!\n&quot;; 
         goto Zeichen_Pruefung2; 
      } 
   } 

   // Beginn der Eingabe 
Zahlen_Eingabe3: 
   cout &lt;&lt; &quot;Zahl3: &quot;; 
   cin  &gt;&gt; Zahl3; 

   /* Ahh da fällt mir noch ein, 
   dass man die Zahlen auf fehlerhafte 
   Eingaben überprüfen muss! */ 
   switch (Zahl3) 
   { 
   case ('a'): 
   case ('b'): 
   case ('c'): 
   case ('d'): 
   case ('e'): 
   case ('f'): 
   case ('g'): 
   case ('h'): 
   case ('i'): 
   case ('j'): 
   case ('k'): 
   case ('l'): 
   case ('m'): 
   case ('n'): 
   case ('o'): 
   case ('p'): 
   case ('q'): 
   case ('r'): 
   case ('s'): 
   case ('t'): 
   case ('u'): 
   case ('v'): 
   case ('w'): 
   case ('x'): 
   case ('y'): 
   case ('z'): 
   // Erweiterte Zeichen bei deutschen Keyboards 
   case ('ö'): 
   case ('ü'): 
   case ('ä'): 
      { 
         cout &lt;&lt; &quot;Falsche Eingabe der Zahl!\n&quot;; 
         // Neu eingeben... 
         goto Zahlen_Eingabe3; 
      } break; 
   } 

   // Hier wird bestimmt, ob man + - * oder : genommen hat oder was anderes 
   switch (chZeichen2) 
   { 
      // War es Plus? 
   case ('+'): 
      { 
         /* Manmanman... ganz schön klever 
         Hier tritt die modifikation ein! */ 
         Ergebnis += Zahl3; 
         cout &lt;&lt; &quot;1. Das Ergebnis lautet --&gt; &quot; &lt;&lt; Ergebnis &lt;&lt; endl; 
      } break; 
      // War es Minus? 
   case ('-'): 
      { 
         // Jetzt wird minus gerechnet 
         Ergebnis -= Zahl3; 
         cout &lt;&lt; &quot;1. Das Ergebnis lautet --&gt; &quot; &lt;&lt; Ergebnis &lt;&lt; endl; 
      } break; 
      // War es Plus? 
   case ('*'): 
      { 
         // Hmmm das multiplizieren ist einfach 
         Ergebnis *= Zahl3; 
         cout &lt;&lt; &quot;1. Das Ergebnis lautet --&gt; &quot; &lt;&lt; Ergebnis &lt;&lt; endl; 
      } break; 
      // Und jetzt nur noch dividieren 
   case (':'): 
      { 
         // Jetzt wird minus gerechnet 
         Ergebnis /= Zahl3; 
         cout &lt;&lt; &quot;1. Das Ergebnis lautet --&gt; &quot; &lt;&lt; Ergebnis &lt;&lt; endl; 
      } break; 
   } 

Menu2: 
   // Mini-Menu mit 2 Optionen 
   cout &lt;&lt; &quot;(w)eiter (b)eenden\n&quot;; 
   cin  &gt;&gt; go_or_end2; 

   /* So jetzt kommt der Switch für Beenden oder weiter machen.. 
   Ich hoffe mal, dass es auch klappt! */ 
   switch (go_or_end2) 
   { 
   case ('W'): 
   case ('w'): 
      { 
         // goto Zahlen_Eingabe4; (wird gleich aktiviert...) 
         goto Beenden_vom_Programm; 
      } break; 
   case ('B'): 
   case ('b'): 
      { 
         // Hier springt er zum Schluss des Programms 
         goto Beenden_vom_Programm; 
      } 
   default: 
      { 
         // Immer wieder der Mist mit den falschen Eingaben... 
         cout &lt;&lt; &quot;Falsche Eingabe bei den Optionen!\n&quot;; 
         goto Menu2; 
      } 
   } 

   /* So hier ist der erste Abschnitt zu ende... 
   Jetzt kommt die dritte Zahl und eine kleine 
   Modifikation vom Script, da es leider mit 
   normalem Kopieren nicht geht... */ 

Beenden_vom_Programm: 

   // Kommandos zum Beenden des Programms 
   wait(); 
   return 0; 
   }
</code></pre>
<p>MfG Darthshoot</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/148252/problem-mit-jumpen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 04 Sep 2026 19:40:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/148252.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 24 May 2006 17:04:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit jumpen on Wed, 24 May 2006 17:04:38 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Also mein Wunsch ist es ein simples Konsolenfenster zu machen, dass + - * : rechnen kann.<br />
Wenn man irgendwas falsches eintippt, bekommt man eine Message und jumpt zurück.<br />
Nun das Problem ist, dass er wenn ich bei Zahlen z.B. einen Buchstaben eintippe, gibt er unendlich Fehlertexte aus und springt scheinbar zurück und wieder hin gibt Message aus und dann wieder zurück usw.. Bei den Menus geht's aber<br />
Ich komm einfach net mehr weiter und hoffe das ihr mir helfen könnt.<br />
Also keine eintippfehler machbar und hier ist der Code:</p>
<p>P.S.: Das sind nur 2/10 des Codes also so stark wie möglich reduziert um hier die Fehler korrekt zu schildern..</p>
<pre><code>#include &lt;iostream&gt; 
#include &lt;conio.h&gt; 
#include &lt;windows.h&gt; 
using namespace std; 

void wait() 
{ 
    FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)); 
    getch(); 
} 

int main () 
{ 
   // Überschrift und Versionsnummer 
   cout &lt;&lt; &quot;!Taschenrechner 1.0 von Darthshoot!\n\n&quot;; 
   // Instruktionen zum Bedienen vom Taschenrechner 
   cout &lt;&lt; &quot;Addieren '+' Subtrahieren '-' Multiplizieren '*' Dividieren ':'\n\n&quot;; 

   // Einzugebende Zahlen 
   int Zahl1; 
   int Zahl2; 
   int Zahl3; 

   /* Ergebnisse die im INT gespeichert werden.. 
   Dank neuem Verfahren spare ich 
   mir 9 Ergebnisse (+= usw.) */ 
   int Ergebnis; 

   // Speicher von den Zeichen 
   char chZeichen1; 
   char chZeichen2; 

   // Bestimmt ob weiter gemacht wird oder beendet 
   char go_or_end1; 
   char go_or_end2; 

   // Beginn der Eingabe 
Zahlen_Eingabe1: 
   cout &lt;&lt; &quot;Zahl1: &quot;; 
   cin  &gt;&gt; Zahl1; 

   /* Ahh da fällt mir noch ein, 
   dass man die Zahlen auf fehlerhafte 
   Eingaben überprüfen muss! */ 
   switch (Zahl1) 
   { 
   case ('a'): 
   case ('b'): 
   case ('c'): 
   case ('d'): 
   case ('e'): 
   case ('f'): 
   case ('g'): 
   case ('h'): 
   case ('i'): 
   case ('j'): 
   case ('k'): 
   case ('l'): 
   case ('m'): 
   case ('n'): 
   case ('o'): 
   case ('p'): 
   case ('q'): 
   case ('r'): 
   case ('s'): 
   case ('t'): 
   case ('u'): 
   case ('v'): 
   case ('w'): 
   case ('x'): 
   case ('y'): 
   case ('z'): 
   // Erweiterte Zeichen bei deutschen Keyboards 
   case ('ö'): 
   case ('ü'): 
   case ('ä'): 
      { 
         cout &lt;&lt; &quot;Falsche Eingabe der Zahl!\n&quot;; 
         // Neu eingeben... 
         goto Zahlen_Eingabe1; 
      } break; 
   } 

   /* Hier her wird gesprungen wenn Zahl1 richtig war, 
   oder Zeichen1 falsch..diese Art der Kommentierung 
   sieht ziemlich smart aus :-) */ 
   Zeichen_Pruefung1: 
   cout &lt;&lt; &quot;+ - * : --&gt; &quot;; 
   cin  &gt;&gt; chZeichen1; 

   // Prüft jetzt ob die Eingabe falsch war 
   switch (chZeichen1) 
   { 
   case ('+'): 
   case ('-'): 
   case ('*'): 
   case (':'): 
      { 
         // Wenn richtig dann zu Zahl2 gehen 
         goto Zahlen_Eingabe2; 
      } break; 
   default: 
      { 
         /* Er sollte ne Message rausgeben, 
         wenn etwas net gestimmt hat und zurück springen */ 
         cout &lt;&lt; &quot;Falsche Eingabe der Rechenzeichen!\n&quot;; 
         goto Zeichen_Pruefung1; 
      } 
   } 

      // Beginn der Eingabe 
Zahlen_Eingabe2: 
   cout &lt;&lt; &quot;Zahl2: &quot;; 
   cin  &gt;&gt; Zahl2; 

   /* Ahh da fällt mir noch ein, 
   dass man die Zahlen auf fehlerhafte 
   Eingaben überprüfen muss! */ 
   switch (Zahl2) 
   { 
   case ('a'): 
   case ('b'): 
   case ('c'): 
   case ('d'): 
   case ('e'): 
   case ('f'): 
   case ('g'): 
   case ('h'): 
   case ('i'): 
   case ('j'): 
   case ('k'): 
   case ('l'): 
   case ('m'): 
   case ('n'): 
   case ('o'): 
   case ('p'): 
   case ('q'): 
   case ('r'): 
   case ('s'): 
   case ('t'): 
   case ('u'): 
   case ('v'): 
   case ('w'): 
   case ('x'): 
   case ('y'): 
   case ('z'): 
   // Erweiterte Zeichen bei deutschen Keyboards 
   case ('ö'): 
   case ('ü'): 
   case ('ä'): 
      { 
         cout &lt;&lt; &quot;Falsche Eingabe der Zahl!\n&quot;; 
         // Neu eingeben... 
         goto Zahlen_Eingabe2; 
      } break; 
   } 

   // Hier wird bestimmt, ob man + - * oder : genommen hat oder was anderes 
   switch (chZeichen1) 
   { 
      // War es Plus? 
   case ('+'): 
      { 
         // Manmanman... ganz schön klever 
         Ergebnis = Zahl1 + Zahl2; 
         cout &lt;&lt; &quot;1. Das Ergebnis lautet --&gt; &quot; &lt;&lt; Ergebnis &lt;&lt; endl; 
      } break; 
      // War es Minus? 
   case ('-'): 
      { 
         // Jetzt wird minus gerechnet 
         Ergebnis = Zahl1 - Zahl2; 
         cout &lt;&lt; &quot;1. Das Ergebnis lautet --&gt; &quot; &lt;&lt; Ergebnis &lt;&lt; endl; 
      } break; 
      // War es Plus? 
   case ('*'): 
      { 
         // Hmmm das multiplizieren ist einfach 
         Ergebnis = Zahl1 * Zahl2; 
         cout &lt;&lt; &quot;1. Das Ergebnis lautet --&gt; &quot; &lt;&lt; Ergebnis &lt;&lt; endl; 
      } break; 
      // Und jetzt nur noch dividieren 
   case (':'): 
      { 
         // Jetzt wird minus gerechnet 
         Ergebnis = Zahl1 / Zahl2; 
         cout &lt;&lt; &quot;1. Das Ergebnis lautet --&gt; &quot; &lt;&lt; Ergebnis &lt;&lt; endl; 
      } break; 
   } 

Menu1: 
   // Mini-Menu mit 2 Optionen 
   cout &lt;&lt; &quot;(w)eiter (b)eenden\n&quot;; 
   cin  &gt;&gt; go_or_end1; 

   /* So jetzt kommt der Switch für Beenden oder weiter machen.. 
   Ich hoffe mal, dass es auch klappt! */ 
   switch (go_or_end1) 
   { 
   case ('W'): 
   case ('w'): 
      { 
         goto Zeichen_Pruefung2; 
      } break; 
   case ('B'): 
   case ('b'): 
      { 
         // Hier springt er zum Schluss des Programms 
         goto Beenden_vom_Programm; 
      } 
   default: 
      { 
         // Immer wieder der Mist mit den falschen Eingaben... 
         cout &lt;&lt; &quot;Falsche Eingabe bei den Optionen!\n&quot;; 
         goto Menu1; 
      } 
   } 

   /* So hier ist der erste Abschnitt zu ende... 
   Jetzt kommt die dritte Zahl und eine kleine 
   Modifikation vom Script, da es leider mit 
   normalem Kopieren nicht geht... */ 

   /* Hier her wird gesprungen wenn Zahl1 richtig war, 
   oder Zeichen1 falsch..diese Art der Kommentierung 
   sieht ziemlich smart aus :-) */ 
Zeichen_Pruefung2: 
   cout &lt;&lt; &quot;+ - * : --&gt; &quot;; 
   cin  &gt;&gt; chZeichen2; 

   // Prüft jetzt ob die Eingabe falsch war 
   switch (chZeichen2) 
   { 
   case ('+'): 
   case ('-'): 
   case ('*'): 
   case (':'): 
      { 
         // Wenn richtig dann zu Zahl2 gehen 
         goto Zahlen_Eingabe3; 
      } break; 
   default: 
      { 
         /* Wenn etwas net gestimmt hat, 
         sollte er ne Message rausgeben und zurück springen */ 
         cout &lt;&lt; &quot;Falsche Eingabe der Rechenzeichen!\n&quot;; 
         goto Zeichen_Pruefung2; 
      } 
   } 

   // Beginn der Eingabe 
Zahlen_Eingabe3: 
   cout &lt;&lt; &quot;Zahl3: &quot;; 
   cin  &gt;&gt; Zahl3; 

   /* Ahh da fällt mir noch ein, 
   dass man die Zahlen auf fehlerhafte 
   Eingaben überprüfen muss! */ 
   switch (Zahl3) 
   { 
   case ('a'): 
   case ('b'): 
   case ('c'): 
   case ('d'): 
   case ('e'): 
   case ('f'): 
   case ('g'): 
   case ('h'): 
   case ('i'): 
   case ('j'): 
   case ('k'): 
   case ('l'): 
   case ('m'): 
   case ('n'): 
   case ('o'): 
   case ('p'): 
   case ('q'): 
   case ('r'): 
   case ('s'): 
   case ('t'): 
   case ('u'): 
   case ('v'): 
   case ('w'): 
   case ('x'): 
   case ('y'): 
   case ('z'): 
   // Erweiterte Zeichen bei deutschen Keyboards 
   case ('ö'): 
   case ('ü'): 
   case ('ä'): 
      { 
         cout &lt;&lt; &quot;Falsche Eingabe der Zahl!\n&quot;; 
         // Neu eingeben... 
         goto Zahlen_Eingabe3; 
      } break; 
   } 

   // Hier wird bestimmt, ob man + - * oder : genommen hat oder was anderes 
   switch (chZeichen2) 
   { 
      // War es Plus? 
   case ('+'): 
      { 
         /* Manmanman... ganz schön klever 
         Hier tritt die modifikation ein! */ 
         Ergebnis += Zahl3; 
         cout &lt;&lt; &quot;1. Das Ergebnis lautet --&gt; &quot; &lt;&lt; Ergebnis &lt;&lt; endl; 
      } break; 
      // War es Minus? 
   case ('-'): 
      { 
         // Jetzt wird minus gerechnet 
         Ergebnis -= Zahl3; 
         cout &lt;&lt; &quot;1. Das Ergebnis lautet --&gt; &quot; &lt;&lt; Ergebnis &lt;&lt; endl; 
      } break; 
      // War es Plus? 
   case ('*'): 
      { 
         // Hmmm das multiplizieren ist einfach 
         Ergebnis *= Zahl3; 
         cout &lt;&lt; &quot;1. Das Ergebnis lautet --&gt; &quot; &lt;&lt; Ergebnis &lt;&lt; endl; 
      } break; 
      // Und jetzt nur noch dividieren 
   case (':'): 
      { 
         // Jetzt wird minus gerechnet 
         Ergebnis /= Zahl3; 
         cout &lt;&lt; &quot;1. Das Ergebnis lautet --&gt; &quot; &lt;&lt; Ergebnis &lt;&lt; endl; 
      } break; 
   } 

Menu2: 
   // Mini-Menu mit 2 Optionen 
   cout &lt;&lt; &quot;(w)eiter (b)eenden\n&quot;; 
   cin  &gt;&gt; go_or_end2; 

   /* So jetzt kommt der Switch für Beenden oder weiter machen.. 
   Ich hoffe mal, dass es auch klappt! */ 
   switch (go_or_end2) 
   { 
   case ('W'): 
   case ('w'): 
      { 
         // goto Zahlen_Eingabe4; (wird gleich aktiviert...) 
         goto Beenden_vom_Programm; 
      } break; 
   case ('B'): 
   case ('b'): 
      { 
         // Hier springt er zum Schluss des Programms 
         goto Beenden_vom_Programm; 
      } 
   default: 
      { 
         // Immer wieder der Mist mit den falschen Eingaben... 
         cout &lt;&lt; &quot;Falsche Eingabe bei den Optionen!\n&quot;; 
         goto Menu2; 
      } 
   } 

   /* So hier ist der erste Abschnitt zu ende... 
   Jetzt kommt die dritte Zahl und eine kleine 
   Modifikation vom Script, da es leider mit 
   normalem Kopieren nicht geht... */ 

Beenden_vom_Programm: 

   // Kommandos zum Beenden des Programms 
   wait(); 
   return 0; 
   }
</code></pre>
<p>MfG Darthshoot</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1064433</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1064433</guid><dc:creator><![CDATA[Darthshoot2 -_-]]></dc:creator><pubDate>Wed, 24 May 2006 17:04:38 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit jumpen on Wed, 24 May 2006 17:18:37 GMT]]></title><description><![CDATA[<p>wow</p>
<p>soviele gotos habe ich selten gesehen.</p>
<p>mach dir einmal die mühe, alle durch for oder whileschleifen zu ersetzen (je nachdem, was sich anbietet).</p>
<p>du wirst sehen, das wirkt wunder ... (und es geht <strong>immer</strong> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1064447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1064447</guid><dc:creator><![CDATA[elise]]></dc:creator><pubDate>Wed, 24 May 2006 17:18:37 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit jumpen on Wed, 24 May 2006 17:24:14 GMT]]></title><description><![CDATA[<p>und zur prüfung von falscheingaben bietet sich folgendes konstrukt sinniger an:</p>
<pre><code>#include &lt;climits&gt;//für INT_MAX

int main( )
{
    int x;

	while ( !(cin&gt;&gt;x) ) {

		cin.clear();
		cin.ignore(INT_MAX, '\n');
		cout&lt;&lt;&quot;Falscheingabe&quot;;
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1064450</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1064450</guid><dc:creator><![CDATA[elise]]></dc:creator><pubDate>Wed, 24 May 2006 17:24:14 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit jumpen on Wed, 24 May 2006 17:31:55 GMT]]></title><description><![CDATA[<p>Darthshoot2 <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f611.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--expressionless_face"
      title="-_-"
      alt="😑"
    /> schrieb:</p>
<blockquote>
<pre><code>switch (Zahl1) 
   { 
   case ('a'): 
   case ('b'): 
   case ('c'): 
   case ('d'): 
   case ('e'): 
   case ('f'): 
   case ('g'): 
   case ('h'): 
   case ('i'): 
   case ('j'): 
   case ('k'): 
   case ('l'): 
   case ('m'): 
   case ('n'): 
   case ('o'): 
   case ('p'): 
   case ('q'): 
   case ('r'): 
   case ('s'): 
   case ('t'): 
   case ('u'): 
   case ('v'): 
   case ('w'): 
   case ('x'): 
   case ('y'): 
   case ('z'): 
   // Erweiterte Zeichen bei deutschen Keyboards 
   case ('ö'): 
   case ('ü'): 
   case ('ä'): 
      { 
         cout &lt;&lt; &quot;Falsche Eingabe der Zahl!\n&quot;; 
         // Neu eingeben... 
         goto Zahlen_Eingabe1; 
      } break; 
   }
</code></pre>
</blockquote>
<p>sowas könnteste auch kürzer schreiben:<br />
if (!isdigit(Zahl1)) goto Zahlen_Eingabe1;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1064456</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1064456</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Wed, 24 May 2006 17:31:55 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit jumpen on Wed, 24 May 2006 17:40:56 GMT]]></title><description><![CDATA[<p>Hmmm ich bin noch net bei For und While Schleifen.. hmm also ich werds umbauen, sobald ich da bin, aber warum kommt denn da so ein komischer Fehler?<br />
Ich meine die Eingabe und Auswertung ob was falsch war unterscheidet sich 0 von der Eingabe und Auswertung der Zeichen und da klappt alles <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /></p>
<p>Kann mir einer sagen wie ich das mit Switch hinbekomme?<br />
Das wäre klasse, weil ich denke das ich da noch länger net hinkommen werde..</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/3162">@Net</a>: He kannste mir diesen Command mal genauer erklären?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1064462</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1064462</guid><dc:creator><![CDATA[Darthshoot2 -_-]]></dc:creator><pubDate>Wed, 24 May 2006 17:40:56 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit jumpen on Wed, 24 May 2006 17:46:08 GMT]]></title><description><![CDATA[<p>Whoa, also für das, was du machen willst, wäre mir der gepostete Code schon zu lang. Und wenn das nur 2/10 sind... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Nichts für ungut, du solltest aber deinen Stil auf jeden Fall nochmal überdenken.</p>
<p>Auch habe ich deinen Quellcode jetzt nicht im Detail angeschaut, aber du machst einen logischen Fehler. Erstmal liest du eine Ganzzahl ein:</p>
<pre><code class="language-cpp">cin  &gt;&gt; Zahl1;
</code></pre>
<p>Das ist ja noch ok. Aber dann vergleichst du diese Eingabe mit Buchstaben. Das funktioniet zwar (Zeichenliterale evaluieren ja letztendlich auch nur zu integralen Werten), ist aber logisch vollkommen falsch. Du liest ja bereits einen integralen Wert ein (Typ int), dh cin sorgt schon selbst dafür, dass auch nur gültige Ziffern für diesen Wert in Betracht gezogen werden. Evtl. Fehler kannst du wie folgt abfragen:</p>
<pre><code class="language-cpp">if (!(cin &gt;&gt; Zahl1))
    // Fehler
</code></pre>
<p>IIRC gabs da aber noch etwas, was hierdurch nicht abgefangen wird. Ist mir momentan allerdings entfallen. Spielt für deine Anwendunge auch erstmal keine Rolle.</p>
<p>Ausserdem ist dein Programm ein nettes Beispiel für den Einsatz des Strategy Patterns.</p>
<pre><code class="language-cpp">case ('+'):
      {
         // Manmanman... ganz schön klever
         Ergebnis = Zahl1 + Zahl2;
         cout &lt;&lt; &quot;1. Das Ergebnis lautet --&gt; &quot; &lt;&lt; Ergebnis &lt;&lt; endl;
      } break;
      // War es Minus?
   case ('-'):
      {
         // Jetzt wird minus gerechnet
         Ergebnis = Zahl1 - Zahl2;
         cout &lt;&lt; &quot;1. Das Ergebnis lautet --&gt; &quot; &lt;&lt; Ergebnis &lt;&lt; endl;
      } break;
      // War es Plus?
   case ('*'):
      {
         // Hmmm das multiplizieren ist einfach
         Ergebnis = Zahl1 * Zahl2;
         cout &lt;&lt; &quot;1. Das Ergebnis lautet --&gt; &quot; &lt;&lt; Ergebnis &lt;&lt; endl;
      } break;
      // Und jetzt nur noch dividieren
   case (':'):
      {
         // Jetzt wird minus gerechnet
         Ergebnis = Zahl1 / Zahl2;
         cout &lt;&lt; &quot;1. Das Ergebnis lautet --&gt; &quot; &lt;&lt; Ergebnis &lt;&lt; endl;
      } break;
   }
</code></pre>
<p>Merkst du was? Sehr viel identischer Code. Das ist nicht nur redundant (auch wenn der Compiler da noch ein bisschen optimieren kann, zB die String Literale), sondern führt auch schnell zu Inkonsistenzen. Lagere einfach die unterschiedlichen Sachen in eine Strategy Klasse/Funktion aus und du hast schon mal ein Stückchen zur Vereinfachung des Quellcodes beigetragen, zB</p>
<pre><code class="language-cpp">struct calc_strategy
{
    static int make_it_so(char op, int lhs, int rhs)
    {
        switch (op)
        {
            case '+':
                return lhs + rhs;
            case '-':
                return lhs - rhs;
            case '*':
                return lhs * rhs;
            // solltest du nicht besser '/' verwenden?
            case ':':
                return lhs / rhs;
        }
        // Fehler!?
        return 0;
    }
};

Ergebnis = calc_strategy::make_it_so(chZeichen1, Zahl1, Zahl2);
cout &lt;&lt; &quot;1. Das Ergebnis lautet --&gt; &quot; &lt;&lt; Ergebnis &lt;&lt; endl;
</code></pre>
<p>Ist natürlich noch relativ einfach gehalten und lässt sich verbessern und mit anderen Teilen deines Programmes verbinden. Soll daher nur das Prinzip verdeutlichen.</p>
<p>Und bitte bitte bitte bitte bitte lass diese Verwendung von goto schnell in der Versenkung verschwinden und benutze für sowas vorgesehene Kontrollstrukturen wie Schleifen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1064466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1064466</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Wed, 24 May 2006 17:46:08 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit jumpen on Wed, 24 May 2006 18:39:00 GMT]]></title><description><![CDATA[<p>Darthshoot2 <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f611.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--expressionless_face"
      title="-_-"
      alt="😑"
    /> schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/3162">@Net</a>: He kannste mir diesen Command mal genauer erklären?</p>
</blockquote>
<p>vergiss es einfach. das geht nicht bei dir weil du einen 'int' eingibst (hatte groovy schon drauf hingewiesen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1064507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1064507</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Wed, 24 May 2006 18:39:00 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit jumpen on Thu, 25 May 2006 10:39:30 GMT]]></title><description><![CDATA[<p>Diese Art der Programmierung mit gotos nennt man zu recht auch Spaghettiprogrammierung. Drucke doch spaßeshalber mal den Quelltext aus und simuliere den Ablauf des Programms, indem du mit einem Bleistift den Verlauf nachzeichnest. Schnell wirst du (hoffentlich) feststellen, dass es ziemlich chaotisch wird und einem Teller Spaghetti ähnelt.</p>
<p>Das Programm was du dort geschrieben hast ist erst eine sehr kleine Applikation. Nun stell dir einfach mal vor, du programmierst an einem großen Projekt und verwendest permanent diese scheußlichen gotos...</p>
<p>Ich habe mich sehr intensiv mit der OOA/D beschäftigt und programmiere schon länger in C++; da muss ich sagen ich habe in einem ernsthafen Programm noch _nie_ gotos verwendet - noch nicht mal ein einziges! Wenn du mein Tipp hören möchtest: Vergiss die gotos einfach. Wenn die in deinem Buch vorkommen, dann überspring das Kapitel einfach oder kauf dir ein anständiges Buch. Du kannst ja mal in ein Programm das dir gefällt reinschauen (ein vorteil von opensource) und mal nach gotos suchen - ich wette du wirst keine oder (je nach Anwendung) nur einige wenige finden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1064787</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1064787</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 25 May 2006 10:39:30 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit jumpen on Thu, 25 May 2006 11:08:04 GMT]]></title><description><![CDATA[<p>vermutung1: der threadersteller hat noch nix von schleifen gehört<br />
vermutung2: das strategy pattern wird er nicht verstehen[, weil]<br />
vermutung3: er hat erst grad mit der programmierung angefangen<br />
vermutung4: er sollte sich an ein gutes tutorial seiner wahl wenden</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1064806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1064806</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Thu, 25 May 2006 11:08:04 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit jumpen on Thu, 25 May 2006 11:13:14 GMT]]></title><description><![CDATA[<p>otze schrieb:</p>
<blockquote>
<p>vermutung2: das strategy pattern wird er nicht verstehen[, weil]</p>
</blockquote>
<p>groovy hat's doch gut erklärt da oben</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1064811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1064811</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Thu, 25 May 2006 11:13:14 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit jumpen on Thu, 25 May 2006 13:48:18 GMT]]></title><description><![CDATA[<p>net schrieb:</p>
<blockquote>
<p>otze schrieb:</p>
<blockquote>
<p>vermutung2: das strategy pattern wird er nicht verstehen[, weil]</p>
</blockquote>
<p>groovy hat's doch gut erklärt da oben</p>
</blockquote>
<p>hast du schonmal ein Haus auf Sand gebaut?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1064894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1064894</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Thu, 25 May 2006 13:48:18 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit jumpen on Thu, 25 May 2006 16:54:06 GMT]]></title><description><![CDATA[<p>otze schrieb:</p>
<blockquote>
<p>vermutung2: das strategy pattern wird er nicht verstehen[, weil]</p>
</blockquote>
<p>Ja, das mag gut sein. Nur wollte ich auch nicht unbedingt, dass er es versteht. Strategy hat ja auch nicht Code Simplification als Hauptziel, das ist eigentlich nur ein schöner Nebeneffekt. Ich wollte dem OP einfach nur eine Möglichkeit zeigen, wie er seinen Code vereinfachen kann, da er doch so einiges unnötig mehrfach macht. Ich kann mich noch recht gut an meine ersten Gehversuche in Pascal erinnern. Mich hat es einfach immer gestört, wenn ich solche Codeduplikate hatte, wo nur 1-2 Unterschiede jeweils drin waren. Dann dieses ganze Copy&amp;Paste, danach die einzelnen Stellen anpassen. Da haben sich schon mal schnell Fehler eingeschlichen. Und all das, nur weil man es nicht besser wusste. Der OP braucht das Strategy Pattern ja gar nicht zu kennen (ist ja auch ein recht umfangreiches Thema - und wie du schon sagst, für einen Anfänger noch zu viel), aber er soll zumindest das Prinzip des Stück Codes verstehen, was ich ihm gepostet habe, um damit problemlos auch die anderen Teile seines Programmes vereinfachen oder flexibler gestalten zu können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1065019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1065019</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Thu, 25 May 2006 16:54:06 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit jumpen on Fri, 26 May 2006 07:58:08 GMT]]></title><description><![CDATA[<p>groovemaster schrieb:</p>
<blockquote>
<p>Ich kann mich noch recht gut an meine ersten Gehversuche in Pascal erinnern. Mich hat es einfach immer gestört, wenn ich solche Codeduplikate hatte, wo nur 1-2 Unterschiede jeweils drin waren.</p>
</blockquote>
<p>das stört wohl viele aber manchmal geht's nicht anders. angenommen man hat 'nen code der echt schnell sein muss in der ausführung (jeder taktzyklus zählt). der code hat 'ne schleife in derem innern eine bedingung ist. un das ganze schneller zu machen kann man die bedingung aus der schleife rausnehmen und zwei schleifen schreiben die sich sehr ähnlich sind.<br />
also sowas:</p>
<pre><code>while (...)
{
  mach_immer();
  if (dedingung)
    mach_dies();
  else
    mach_das();
}
</code></pre>
<p>ist langsamer als</p>
<pre><code>if (bedingung)
  while (...)
  {
    mach_immer();
    mach_dies();
  }
else
  while (...)
  {
    mach_immer();
    mach_das();
  }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1065258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1065258</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Fri, 26 May 2006 07:58:08 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit jumpen on Fri, 26 May 2006 08:05:59 GMT]]></title><description><![CDATA[<p>net schrieb:</p>
<blockquote>
<p>otze schrieb:</p>
<blockquote>
<p>vermutung2: das strategy pattern wird er nicht verstehen[, weil]</p>
</blockquote>
<p>groovy hat's doch gut erklärt da oben</p>
</blockquote>
<p>Strategy Pattern? Wo?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1065267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1065267</guid><dc:creator><![CDATA[C.Santa]]></dc:creator><pubDate>Fri, 26 May 2006 08:05:59 GMT</pubDate></item></channel></rss>