<?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[Fehlersuche bei Zeicheneingabe]]></title><description><![CDATA[<p>Ich habe eine Frage zu Zeicheneingaben. Ich habe hier ein Programm, dass zwar bei der Eingabe eines + nicht meckert, aber bei Zeichen, dh. A-&gt;Z oder # etc.</p>
<p>Warum wird das Pluszeichen akzeptiert?</p>
<pre><code class="language-cpp">#include &lt;iostream.h&gt;

enum CHOICE{DrawRect=1,GetArea,GetPerim,ChangeDimensions,Quit}; // Aufzaehlungskonstante für die Funktionen

class Rectangle{ // Klassenerstellung damit Daten, auch komplexe Daten über das Objekt definiert, 
                 //geändert werden können

    public: 
        Rectangle(int width, int height); // Konstruktor
         ~Rectangle(); // Destruktor

    int GetHeight() const {return itsHeight; } // Elementfunktion Get eingegebene Höhe
    int GetWidth() const {return itsWidth; } // Elementfunktion Get eingegebene Breite
    int GetArea() const {return itsHeight*itsWidth; } // Elementfunktion Get berechnete Flaeche
    int GetPerim() const {return 2*itsHeight+2*itsWidth; } // Elementfunktion Get eingegebene Parameter
    void SetSize(int newWidth, int newHeight); // Elementfunktion Setzt Werte (Höhe, Breite)

    private:
        int itsWidth; // Elementvariablen
        int itsHeight;
};

void Rectangle::SetSize(int newWidth, int newHeight){ // Funktionsdefinition

    itsWidth=newWidth; // Initialisierung
    itsHeight=newHeight;   
}    

Rectangle::Rectangle(int width, int height){
 itsWidth=width; // Konstruktor Initialisierung
 itsHeight=height;   
}    

Rectangle::~Rectangle(){} // Destruktor (zerstört das Objekt)

int DoMenu(); // Deklaration der Funktionen für Main Funktion
void DoDrawRect(Rectangle);
void DoGetArea(Rectangle);
void DoGetPerim(Rectangle);   

int main(){

    Rectangle theRect(30,5); // Objekterstellung mit Vorgabedaten

       int choice = DrawRect; // Aufruf über choice der DrawRectfunktion über enum
       int fQuit = false; // flag, Quit soll solange false sein, bis es zu true gewählt wird  

          while(!fQuit){ //Endlos-Schleife solange Menu aufrufen bis Quit gewählt wird

              choice=DoMenu(); // Aufruf des Menu's
              if (choice &lt; DrawRect || choice &gt; Quit){ // Abfrage
              cout &lt;&lt; &quot;\nAuswahl ungueltig. Bitte neu versuchen.\n\n&quot;;
              continue;    
              }       
              switch(choice){

               case DrawRect: 
                   DoDrawRect(theRect);
                   break;
               case GetArea: 
                   DoGetArea(theRect);
                   break;
               case GetPerim:
                   DoGetPerim(theRect);
                   break;
               case ChangeDimensions:
                   int newLength, newWidth;
                   cout &lt;&lt; &quot;\nNeue Breite: &quot;;
                   cin &gt;&gt; newWidth;
                   cout &lt;&lt; &quot;\nNeue Höhe: &quot;;
                   cin &gt;&gt; newLength;
                   theRect.SetSize(newWidth,newLength);
                   DoDrawRect(theRect);
                   break;
               case Quit:
                   fQuit=true;
                   cout &lt;&lt; &quot;\nVerlassen...\n\n&quot;;
                   break;
               default:
                   cout &lt;&lt; &quot;Fehler beim Auswaehlen!\n&quot;;
                   fQuit=true;
                   break;
           }
       }   
       return 0;       
}    

int DoMenu(){
 int choice;
    cout &lt;&lt; &quot;\n\n *** Menue *** \n\n&quot;;
    cout &lt;&lt; &quot;(1) Rechteck zeichnen\n&quot;;
    cout &lt;&lt; &quot;(2) Flaeche\n&quot;;
    cout &lt;&lt; &quot;(3) Umfang\n&quot;;
    cout &lt;&lt; &quot;(4) Groesse veraendern\n&quot;;
    cout &lt;&lt; &quot;(5) Beenden.\n&quot;;

cin &gt;&gt; choice;
return choice;
}    

void DoDrawRect(Rectangle theRect){
 int height=theRect.GetHeight(); // Aufruf über das Objekt der Elementfunktion
 int width=theRect.GetWidth();

    for(int i=0;i&lt;height;i++){ // Ausgabe über geschachtelte Forschleifen des Rectangles
    for(int j=0;j&lt;width;j++)
    cout &lt;&lt; &quot;*&quot;;
    cout &lt;&lt; &quot;\n&quot;;    
    }       
}    

void DoGetArea(Rectangle theRect){
 cout &lt;&lt; &quot;Flaeche: &quot; &lt;&lt; theRect.GetArea() &lt;&lt; endl; // Gib berechnete Fläche über das Objekt aus 
}    

void DoGetPerim(Rectangle theRect){
 cout &lt;&lt; &quot;Umfang: &quot; &lt;&lt; theRect.GetPerim() &lt;&lt; endl;   //Gib Parameter aus, die den Umfang bestimmen
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/206235/fehlersuche-bei-zeicheneingabe</link><generator>RSS for Node</generator><lastBuildDate>Sat, 10 Oct 2026 05:05:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/206235.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 22 Feb 2008 13:05:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehlersuche bei Zeicheneingabe on Fri, 22 Feb 2008 13:05:31 GMT]]></title><description><![CDATA[<p>Ich habe eine Frage zu Zeicheneingaben. Ich habe hier ein Programm, dass zwar bei der Eingabe eines + nicht meckert, aber bei Zeichen, dh. A-&gt;Z oder # etc.</p>
<p>Warum wird das Pluszeichen akzeptiert?</p>
<pre><code class="language-cpp">#include &lt;iostream.h&gt;

enum CHOICE{DrawRect=1,GetArea,GetPerim,ChangeDimensions,Quit}; // Aufzaehlungskonstante für die Funktionen

class Rectangle{ // Klassenerstellung damit Daten, auch komplexe Daten über das Objekt definiert, 
                 //geändert werden können

    public: 
        Rectangle(int width, int height); // Konstruktor
         ~Rectangle(); // Destruktor

    int GetHeight() const {return itsHeight; } // Elementfunktion Get eingegebene Höhe
    int GetWidth() const {return itsWidth; } // Elementfunktion Get eingegebene Breite
    int GetArea() const {return itsHeight*itsWidth; } // Elementfunktion Get berechnete Flaeche
    int GetPerim() const {return 2*itsHeight+2*itsWidth; } // Elementfunktion Get eingegebene Parameter
    void SetSize(int newWidth, int newHeight); // Elementfunktion Setzt Werte (Höhe, Breite)

    private:
        int itsWidth; // Elementvariablen
        int itsHeight;
};

void Rectangle::SetSize(int newWidth, int newHeight){ // Funktionsdefinition

    itsWidth=newWidth; // Initialisierung
    itsHeight=newHeight;   
}    

Rectangle::Rectangle(int width, int height){
 itsWidth=width; // Konstruktor Initialisierung
 itsHeight=height;   
}    

Rectangle::~Rectangle(){} // Destruktor (zerstört das Objekt)

int DoMenu(); // Deklaration der Funktionen für Main Funktion
void DoDrawRect(Rectangle);
void DoGetArea(Rectangle);
void DoGetPerim(Rectangle);   

int main(){

    Rectangle theRect(30,5); // Objekterstellung mit Vorgabedaten

       int choice = DrawRect; // Aufruf über choice der DrawRectfunktion über enum
       int fQuit = false; // flag, Quit soll solange false sein, bis es zu true gewählt wird  

          while(!fQuit){ //Endlos-Schleife solange Menu aufrufen bis Quit gewählt wird

              choice=DoMenu(); // Aufruf des Menu's
              if (choice &lt; DrawRect || choice &gt; Quit){ // Abfrage
              cout &lt;&lt; &quot;\nAuswahl ungueltig. Bitte neu versuchen.\n\n&quot;;
              continue;    
              }       
              switch(choice){

               case DrawRect: 
                   DoDrawRect(theRect);
                   break;
               case GetArea: 
                   DoGetArea(theRect);
                   break;
               case GetPerim:
                   DoGetPerim(theRect);
                   break;
               case ChangeDimensions:
                   int newLength, newWidth;
                   cout &lt;&lt; &quot;\nNeue Breite: &quot;;
                   cin &gt;&gt; newWidth;
                   cout &lt;&lt; &quot;\nNeue Höhe: &quot;;
                   cin &gt;&gt; newLength;
                   theRect.SetSize(newWidth,newLength);
                   DoDrawRect(theRect);
                   break;
               case Quit:
                   fQuit=true;
                   cout &lt;&lt; &quot;\nVerlassen...\n\n&quot;;
                   break;
               default:
                   cout &lt;&lt; &quot;Fehler beim Auswaehlen!\n&quot;;
                   fQuit=true;
                   break;
           }
       }   
       return 0;       
}    

int DoMenu(){
 int choice;
    cout &lt;&lt; &quot;\n\n *** Menue *** \n\n&quot;;
    cout &lt;&lt; &quot;(1) Rechteck zeichnen\n&quot;;
    cout &lt;&lt; &quot;(2) Flaeche\n&quot;;
    cout &lt;&lt; &quot;(3) Umfang\n&quot;;
    cout &lt;&lt; &quot;(4) Groesse veraendern\n&quot;;
    cout &lt;&lt; &quot;(5) Beenden.\n&quot;;

cin &gt;&gt; choice;
return choice;
}    

void DoDrawRect(Rectangle theRect){
 int height=theRect.GetHeight(); // Aufruf über das Objekt der Elementfunktion
 int width=theRect.GetWidth();

    for(int i=0;i&lt;height;i++){ // Ausgabe über geschachtelte Forschleifen des Rectangles
    for(int j=0;j&lt;width;j++)
    cout &lt;&lt; &quot;*&quot;;
    cout &lt;&lt; &quot;\n&quot;;    
    }       
}    

void DoGetArea(Rectangle theRect){
 cout &lt;&lt; &quot;Flaeche: &quot; &lt;&lt; theRect.GetArea() &lt;&lt; endl; // Gib berechnete Fläche über das Objekt aus 
}    

void DoGetPerim(Rectangle theRect){
 cout &lt;&lt; &quot;Umfang: &quot; &lt;&lt; theRect.GetPerim() &lt;&lt; endl;   //Gib Parameter aus, die den Umfang bestimmen
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1460938</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1460938</guid><dc:creator><![CDATA[david3252]]></dc:creator><pubDate>Fri, 22 Feb 2008 13:05:31 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlersuche bei Zeicheneingabe on Fri, 22 Feb 2008 13:31:33 GMT]]></title><description><![CDATA[<p>cin erwartet einen Integralen Wert.<br />
Wenn du aber ein Zeichen eingibst wird das badflag von cin gesetzt und cin ist immer 'false'</p>
<p>Ich würde bevor du cin einliesst fragen, ob die Eingabe gültig ist und nicht erst danach.<br />
Ansonsten gibts eine Endlosschleife deines Menüs.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1460955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1460955</guid><dc:creator><![CDATA[777]]></dc:creator><pubDate>Fri, 22 Feb 2008 13:31:33 GMT</pubDate></item></channel></rss>