Zum Inhalt springen

Taschenrechner Problem


aLeXanDer..

Empfohlene Beiträge

Hallo Community

hab das Forum schon durchsucht aber nichts gefunden was mit helfen kann.

Habe folgende Aufgabe bekommen :

Es soll ein kleines Taschenrechner-Programm erstellt werden das zwei Zahlen (Operanden) und einen Operator nach folgender Syntax einliest:

Operand1 Operator Operand2

Als Operator sind nur +, -, * und / zulässig. Wird ein anderer Operator eingegeben, so soll eine entsprechende Fehlermeldung ausgegeben werden. Die Operanden sind als short-Werte einzulesen.

Bei korrekter Eingabe ist das Ergebnis der eingegebenen Formel als Ganzzahl zu berechnen und auszugeben.

bin so vorgegangen das ich erstmal die operanden definiert hab mit

short operand1;

short operand2;

dann kommt das erste problem

ich komm nicht drauf wie das mit dem Operator geht. Kann man ihn definieren mit den zeichen *+-/?! wenn ja wie? muss ich ihn nicht definieren?!

zudem hät ich noch gemacht

double = result

int main()

result = operand1 operator operand2 ;

cout << "Eingabe der Werte" ;

cin >> operand1 >> operator >> operand2;

if (!operator)

{

cout << "Fehler" << endl;

}

else

{

cout << result;

}

nun ich denke bzw. weiß das einiges falsch ist

deswegen brauch ich hilfe

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zunächst musst du dir darüber im Klaren sein, dass du nicht auf "magische" Weise aus Benutzereingaben Code erzeugen kannst. Das geht nur bei Scriptsprachen und Sprachen, die Reflection unterstützen. C++ gehört nicht dazu.

Die Eingabe des Benutzers ist also zunächst mal nur Text, ohne semantische Bedeutung für deinen Code. Der Operator ist also nur ein Zeichen, und als solches solltest du dann auch die Variable definieren: als char. Die Eingabe kannst du prüfen, indem du sie mit den Zeichenliteralen '+', '-', '*' oder '/' vergleichst.

Das heißt aber natürlich auch, dass du dafür verantwortlich bist, dass je nach Operator die richtige Operation ausgeführt wird. Du kannst char-Ausdrücke übrigens als Steuerungsausdruck für eine Switch-Anweisung verwenden:

char c;
cin >> c;
switch( c )
{
case '+':
// Addieren
break;

// ... usw ...

default:
// Falsche Eingabe
break;
}[/code]

Zweitens musst du die richtige Reihenfolge der Arbeitsschritte einhalten. In deinem Code berechnest du das Ergebnis, bevor der Benutzer die Daten eingibt. Es sollte offensichtlich sein, dass das nicht funktioniert.

Drittens darfst du "operator" nicht als Variablenname verwenden. Das ist ein Schlüsselwort in C++.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Könntest du deine Fragen etwas präziser stellen?

Ich habe doch eben geschrieben, dass du operator nicht als Variablennamen benutzen darfst. Du darf ja auch keine Variable namens int, return oder for anlegen. Das sind Schlüsselwörter, die sind reserviert.

Das heißt, wenn du deine char-Variable für den Operator deklarierst, darfst du sie nicht operator nennen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

mit IF :

int main ()

{

short operand1;

short operand2;

char oper;

std::cout << "Formel nach Syntax Operand 1 Operator Operand2 eingeben!" << std::endl;

std::cout << "Operator kann +,*, -,/ sein" << std::endl;

std::cout << "Formel :" ;

std::cin >> operand1 >> oper >> operand2;

std::cout << "Ergebnis: \n";

if (oper == '+')

std::cout << operand1 + operand2;

if (oper == '-')

std::cout << operand1 - operand2;

if (oper == '*')

std::cout << operand1 * operand2;

if (oper == '/')

std::cout << operand1 / operand2;

else

std::cout << "Falsche Eingabe";

}

also es funktioniert

ist vielleicht trotzdem irgendwas mhh schlecht gemacht oder so!?

Link zu diesem Kommentar
Auf anderen Seiten teilen

hab gerade festgestellt das es ein relativ dummes programm ist :)

das kann ja nix außergewöhnliches rechnen

Naja was hast du denn erwartet? :)

Der nächste Schritt wäre jetzt die Eingaben auf ihre Korrektheit zu prüfen bevor du damit arbeitest. Danach könntest du zum Beispiel einen einfachen Parser integrieren so das der Benutzer evtl auch "3+2*5-8" eingeben kann und wenn das funktioniert dir mal Gedanken drüber machen wie du Punkt-vor-Strich Rechnung einbauen kannst ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...