Innerhalb einer Funktion andere Variablennamen

Zwei Sachen die mir aufgefallen sind: Eingabe != true ist keine Zuweisung und wenn es eine wäre, wäre "Eingabe" in deinem Programm immer false. Das sollte Eingabe == true heissen.
Und in deiner while-Bedingung hast Du eine Zuweisung von false zu Eingabe. Dein Programm würde die Schleife niemals wiederholen weil das Ergebnis der Zuweisung immer false ist. Sollte als so sein: while (Eingabe == false).
 
Hi.
Code:
  } else {
     Eingabe != true;
Du hast hier einen Ausdruck als Anweisung geschrieben, das != ist der Ungleichheitsoperator. Dieser Ausdruck hat keine Seiteneffekte (der Wert von Eingabe ändert sich nicht). Du wolltest vermutlich den Zuweisungsoperator (=) verwenden.
Code:
     } while (Eingabe = false);
Du verwendest hier den Zuweisungsoperator (=), vermutlich meintest du den Vergleichsoperator (==).

Aber bei boolschen Variablen ist es unnötig zu vergleichen. Es ist besser 1.) die Variable entsprechend zu benennen und 2.) den Wahrheitswert der Variable einfach abzufragen:
C++:
bool eingabeOK = false;

do {
  ...
} while (!eingabeOK);
Gruß
 
OK verstanden.
Man mekrt dass ich schon länger nicht mehr programmiert habe.
Aber das != war ein Tippfehler.

Edit:

So habe Jetzt schon einen ganzen Rechner mit allen 4 Grundrechnungsarten und Wurzelziehen und potenzieren erstellt.
Hier mal eine solche Funktion:
Code:
//Mehtode für das Wurzelziehen
int Rechner::Wurzelziehen() {
       Rechner Rechner;
       float x;
       float n;
       int Eingabe;
       cout << "Bitte geben Sie den Wert der Wurzelbasis(Radikand) an: ";
       cin >> x;
       cout << "Bitte geben Sie den Wert des Wurzelexponenten an: ";
       cin >> n;
       cout << endl << "Das Ergebnis ist ";
       cout << pow(x,1/n);
       cout << endl;
       Aussehen Aussehen;
       Aussehen.Trennlinie(40);
       cout << "Was moechten Sie nun tun?" << endl;
       cout << "Zurueck zum Anfang (1)   "  << endl; 
       cout << "Noch mal wurzelziehen (2)   Beenden (2)" << endl;
       cin >> Eingabe;
       Aussehen.Trennlinie(40);
       switch (Eingabe) {
              case 1:int zahl = Aussehen.Menue ();
                      Aussehen.MenueVerarbeiten (zahl);
                      break;
              case2: Rechner.Wurzelziehen();
                      break;
              case 3: exit(0);
                      break;
                      }
       }

Aber mit bei dem roten Teil hagelt es nur so vin Fehlern.
Ich will eine Methode einer anderen Klasse (Was mit anderen Methoden auch geht) aufrufen und damit weiterarbeiten.

Und hier die 2 gefragten Methoden:
Code:
int Aussehen::Menue () {
     
     //Erzeugung und AUsgabe der Menüpunkte
     int Hoechstwert = 2;
     string Menuepunkte [Hoechstwert];
     Menuepunkte[0] = "Rechner";
     Menuepunkte[1] = "Beenden";    
     for (int i = 0; i <= Hoechstwert - 1; i++) {
         cout << Menuepunkte[i] << " (" << i+1 << ")    ";
         }
     
     //Frage nach dem Menüpunkt
     int MenuepunktBenutzer;
     bool Eingabe = false;     
     do {
     cout << endl << "Fuer welchen Punkt haben sie sich entschieden?" << endl;
     cin >> MenuepunktBenutzer;
     
     if (MenuepunktBenutzer > Hoechstwert) {
         cout << endl << "Ihr angegebener Wert ist falsch!";
         Eingabe = false;
         } else {
                Eingabe = true;
                }
     } while (!Eingabe);
     return MenuepunktBenutzer;
}

UNd noch die zweite:
Code:
//Metohde zum Verarbeiten der Menüeingabe
void Aussehen::MenueVerarbeiten (int WertMenue){
     Aussehen Aussehen;
     int MenuepunktBenutzer;
     switch (WertMenue) {
           case 2: exit(0); 
                   break;
           case 1: Rechner Rechner;
               MenuepunktBenutzer = Rechner.Menue();   
               switch (MenuepunktBenutzer) {
                      case 1: Rechner.Addieren();
                      break;
                      case 2: Rechner.Subtrahieren();
                      break;
                      case 3: Rechner.Multiplizieren();
                      break;
                      case 4: Rechner.Dividieren();
                      break;
                      case 5: Rechner.Potenzieren();
                      break;
                      case 6: Rechner.Wurzelziehen();
                      break;
                      case 7: Aussehen.Menue ();
                      break;
                      case 8: exit(0);
                      break;
                      }  
           }
     }

Ich hoffe das war jetzt nciht zu viel Code.


2. Edit:
Habe in den Anhang noch ein Bild mit den Fehlermeldungen hochgeladen.

mfg
 

Anhänge

  • srcrenshot programm.JPG
    srcrenshot programm.JPG
    17,2 KB · Aufrufe: 9
Zuletzt bearbeitet:
Wenn Du Variabeln innerhalb eines case deklarieren möchtest, musst du einen Block mit geschweiften Klammern erstellen:
C++:
switch (Eingabe) {
  case 1: { // Hier neuer Block
    int zahl = Aussehen.Menue ();
    Aussehen.MenueVerarbeiten (zahl);
    break;
  }
  case 2:
    Rechner.Wurzelziehen();
    break;
  case 3:
    exit(0);
    break;
}
 
Zuletzt bearbeitet von einem Moderator:
Zurück