Rechner schreiben -> if problem
-
Hallo zusammen
bin neu hier und bin auch noch ein anfänger was c++ angeht.habe so zum anfang einen kleinen rechner geschrieben, aber habe den ganze forum und google durchsucht, leider kein erfolg.
#include <iostream> using namespace std; int main() { int zahl1; int zahl2; char op[2]; cout <<"erste Zahl eingeben!" << endl; cin >>zahl1; cout <<"Operationszeichen eingeben! -> +,-,*,/" << endl; cin >>op[1]; cout <<"zweite Zahl eingeben!" << endl; cin >>zahl2; if (op == "+") { cout << zahl1 + zahl2 << endl; } if (op == "-") { cout << zahl1 - zahl2 << endl; } if (op == "*") { cout << zahl1 * zahl2 << endl; } if (op == "/") { cout << zahl1 / zahl2 << endl; } return 0; }habe den rechner kompiliert und getestet, aber habe keine ausgabe bekommen nach dem if.
danke im voraus

-
du machst zwei fatale fehler:
1. char op[2] erzeugt platz für 2 chars. Du ließt den char in op[1] ein. Das erste zeichen ist aber op[0].
Zweitens kannst du einen pointer nicht mit einem string literal vergleichen. Da musst du strcmp benutzen.Am besten wäre es aber, wenn du std::string benutzt. Dann läuft dsa ganze intuitiver:
#include <iostream> #include <string> using namespace std; int main() { int zahl1; int zahl2; string operator; cout <<"erste Zahl eingeben!" << endl; cin >>zahl1; cout <<"Operationszeichen eingeben! -> +,-,*,/" << endl; cin >>op; cout <<"zweite Zahl eingeben!" << endl; cin >>zahl2; if (op == "+") { cout << zahl1 + zahl2 << endl; } if (op == "-") { cout << zahl1 - zahl2 << endl; } if (op == "*") { cout << zahl1 * zahl2 << endl; } if (op == "/") { cout << zahl1 / zahl2 << endl; } return 0; }In dem Falle könntest du statt string auch char nehmen und mit '+' (usw) vergleichen (aber nicht "+" ! )
-
edit: statt string operator; muss es natürlich string op; heißen!
-
thx für die schnelle und klare hilfe ^^
-
#include <iostream> using std::cout; using std::cin; using std::endl; int main() { int zahl1; cout <<"erste Zahl eingeben!" << endl; cin >>zahl1; char op; cout <<"Operationszeichen eingeben! -> +,-,*,/" << endl; cin >>op; int zahl2; cout <<"zweite Zahl eingeben!" << endl; cin >>zahl2; int ergebnis(zahl1); switch(op) { case '+': ergebnis += zahl2; break; case '-': ergebnis -= zahl2; break; case '*': ergebnis *= zahl2; break; case '/': ergebnis /= zahl2; break; default: cout << "falsche eingabe!"; return 1; } cout << ergebnis << endl; }bb