Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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++.

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.

  • Autor

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!?

  • Autor

if (oper == '+')

std::cout << operand1 + operand2;

else

if (oper == '-')

else

std::cout << operand1 - operand2;

....

so gemeint?!

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

das kann ja nix außergewöhnliches rechnen

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 ;)

  • Autor

Soweit bin ich nocht nicht, dass ich wüßte was ein Parser is und wie ich ihn einsetze. ich steck noch in den Kinderschuhen.

Erwartet hab nur soviel das er funktioniert ;)

aba das bei sowas wie 5/4 = 1 rauskommt is halt dann scho simpelst

müsst ma noch dran rumspieln und ihn bissl tunen :D

  • Autor

ja ich wollte ja nicht darauf raus das es falsch ist , sondern das man normalerweiße "Vierfünftel" erwartet ;)

und wie gesagt da müsste man änderungen vornehmen , was ich aber etz gar net mag. muss weiter lernen ;)

danke guy =)

bis zum nächsten Problem :D

Du kannst auch einfach den Datentyp auf z.B. double ändern, dann würde er das Ergebnis nicht runden.

edit: Wer lesen kann ist klar im Vorteil :D

War ja die Aufgabe, das als short zu deklarieren.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.