Anfänger Taschenrechner
-
Hi Community,
ich habe einen Taschenrechner programmiert, doch irgendwas stimmt mit dem Quellcode nicht.
Aber ich komme einfach nicht drauf was ich ändern könnte:Hier erstmal der Code

#include <cstdlib> #include <iostream> #include <conio.h> using namespace std; int main() { float a, b, erg; int zeichen; cout<<"#############################"<<endl; cout<<"# Willkommen! #"<<endl; cout<<"# Zum 1. Projekt. #"<<endl; cout<<"# Dem Taschenrechner #"<<endl; cout<<"#############################"<<endl; cout<<"Geben Sie Ihre erste Zahl ein: "<<endl; cin>>a; cout<<"Geben Sie Ihre zweite Zahl ein: "<<endl; cin>>b; cout<<"Was soll mit diesen Zahlen gemacht werden? "<<endl; cin>>zeichen; if(zeichen=="+") { erg=a+b; cout<<erg<<endl; } if(zeichen=="-") { erg=a-b; cout<<erg<<endl; } if(zeichen=="/") { erg=a/b; cout<<erg<<endl; } if(zeichen=="*") { erg=a*b; cout<<erg<<endl; } system("PAUSE"); return EXIT_SUCCESS; }Als Fehlermeldung erscheint diese hier mehrmals:
error: ISO C++ forbids comparison between pointer and integer
Ist bestimmt ein einfacher Fehler, wäre aber dankbar für eure Hilfe

Gruß
uRu
-
Hallo Gast21,
ich denke, "zeichen" sollte als "char" definiert werden.
Chris_
-
Hi chris,
ich bekomme leider immer noch den selben Fehler.
Als ich deinen Vorschlag gelesen habe dachte ich allerdings das er die Lösung des Problems wäre da ich ja meiner Variable zeichen auch ein char zuweise mit "".Trotzdem derselbe Fehler....mist.
-
Du solltest in deinen "if"-Abfragen die Rechenzeichen in einfache Anführungszeichen
" ' "(z. B.'+') setzen. Hier bietet sich auch die Kontrollstruktur "switch" an, falls du die schon kennst.
-
"+" ist kein char. Du brauchst '+'.
-
Ok danke Leute die Änderung von " zu ' hat geholfen werde aber auch den switch case Vorschlag mal ausprobieren, ist schließlich alles Übung

Thx für die schnelle Antwort, super Forum
-
Tut mir leid, das mit den Anführungszeichen hab ich glatt übersehen

Chris_
-
Es wäre vll nützlich dem Threadersteller auch zu sagen warum das nicht geht und was genau er falsch gemacht hat, anstatt so halbe Lösungen mit ein bisschen herumraten.
Du hast zeichen als int deklariert, dann versuchst du zum Beispiel ein Pluszeichen einzulesen und dem Integer zuzuweisen was nicht klappt, cin setzt seinen Fehlerstatus. So nun willst du dein uninitialisiertes int( ist aber in dem Fall nur nebensächlich ) mit einem Stringliteral vergleichen, das stringliteral ist aber vom Typ const char[], bzw wird als const char* angesehen( Stichwort: array to pointer decay ) und dies kann man nicht mit einem int vergleichen.
Also nehm als Zeichen ein char oder std::string.
Lg freeG
-
Super!
Vielen vielen Danke fr33g.
Sehr guter Beitrag, hat mir geholfen.