Taschenrechner
-
Hi,
ich bin neu und darum bitte ich euch erstmal meine fehler zu verzeihen,
weshalb kritik in höflicher form nicht unerwünscht ist(das sage ich
weil ich dieses problem aus anderen foren kenne)vielen dank.
Ich hab jetzt seit knapp nem jahr mit basic programmiert und jetzt versuch
ich mal meinen ersten taschenrechner mit c++, es sind sicher ziemlich viele
fehler drinnen, aber ich bekommm nur die meldung das ich zwei habe.
Ich benutze Kdevelop(das bei meinem SuSe Linux 8.2 dabei war)
schaut euch den code einfach mal bitte an, ich find den oder die fehler leider
nicht.Vielen dank im vorraus.MFG Max;
#ifdef HAVE_CONFIG_H #include <config.h> #endif //wichtige Header Dateien #include <iostream.h> #include <stdlib.h> int main(){ //Variablen erzeugen float erste_zahl; float zweite_zahl; char rechenzeichen; float ergebniss; //eingabe der zahlen cin >> erste_zahl; cin >> rechenzeichen; cin >> zweite_zahl; //Auslesung des Rechenzeichens und die daraus resultierende berechnung if (rechenzeichen ==+) ergebniss = erste_zahl + zweite_zahl; else if (rechenzeichen ==-) ergebniss = erste_zahl - zweite_zahl; else if (rechenzeichen ==*) ergebniss = erste_zahl * zweite_zahl; else if (rechenzeichen ==/) ergebniss = erste_zahl / zweite_zahl; //Ausgabe des ergebnisses cout << ergebniss; return 0; }
-
#ifdef HAVE_CONFIG_H #include <config.h> #endif //wichtige Header Dateien #include <iostream.h> #include <stdlib.h> int main(){ //Variablen erzeugen float erste_zahl; float zweite_zahl; char rechenzeichen; float ergebniss; //eingabe der zahlen cin >> erste_zahl; cin >> rechenzeichen; cin >> zweite_zahl; //Auslesung des Rechenzeichens und die daraus resultierende berechnung if (rechenzeichen == '+') ergebniss = erste_zahl + zweite_zahl; else if (rechenzeichen == '-') ergebniss = erste_zahl - zweite_zahl; else if (rechenzeichen == '*') ergebniss = erste_zahl * zweite_zahl; else if (rechenzeichen == '/') ergebniss = erste_zahl / zweite_zahl; //Ausgabe des ergebnisses cout << ergebniss; return 0; }
Versuche es mal so.
Code-Hacker
-
Vielen dank
ich werd´s
gleich ausprobieren, geht ja echt schnell hier.
Mfg Max
-
Jo,
hab´s unter Kdevelop 2,1 getestet und er zeigt
dank den änderungen keine fehlermeldung mehr an.
Aber er rechnet noch nicht wie er soll, gibt immer als ergebniss die
null aus.Vielen dank im vorraus und noch mal vielen dank
@Code-HackerPS:Wie kann ich den zeilen umbruch bei einem cin ausschalten, also in
der selben zeile weiter rechnen(und das lästige enter wegschalten), muss ich das kompliziert über
so eine Art inkey(Aus Darkbasic) machen.Hmmm wenn man dann noch eine 3te zu rechnende zahl eingeben kann,
sollte man ja überprüfen ob man keine dritte will, also eine variable
für das ergebnisszeichen erstellen, aber man kann ja nich wissen ob
der benutzer weiterrechnen will und eine dritte zahl eingeben will.
Wegen den variablentypen, vielleicht liegt an dieser stelle auch der
fehler in meinem programm, denn vielleicht wird ja eine rechenzeichen als
int und nicht als char genommen, würd mich aber wundern denn es ist ja keine
zahl.Ich hoffe ihr wisst die lösung.Vielen dank im vorraus und entschuldigung wegen der auftretenden belästigungen.
-
Was bringt die config.h???
Also ich habe es eben getestet (VC++.net), er hat ganz normal gerechnet, solange ich die eingabe nicht in einer zeile (bewirkt das alles durch leerzeichen getrennt wird) eingeben lasse, sondern für jede variable eine eigene zeile nehme, also so wie im programm. evtl. (je nach größe deiner zahlen) solltest du aus ergebnis eine double zahl machen.Code-Hacker
-
Code-Hacker schrieb:
Was bringt die config.h???
Code-HackerNaja in diesem Fall sicher nicht viel. Da stehen OS-abhängige defines drin.
Sie wird in der Regel vom configure script generiert und ist eine große Hilfe wenn du dein Programm portabel halten willst. Ist son unix ding*gg
KDevelop erstellt automatisch entsprechende scripts u.a. auch ein(mehrere) makefile(s) das zur Compilierung deines Projekts verwendet wird
-
Hi,
es läuft leider immer noch nicht richtig,
ich bekomme weder eine Fehlermeldung, noch eine Warnung.
Könnte es bitte jemand der Kdevelop 2,1 besitzt es testen.
Ich bekomme vor der eingabe der zweiten zahl, also vor dem
3en cin, gleich als ergebniss eine null ausgegeben.
MfG Max
-
du hast auch das Problem, dass du den Tastatur Buffer nicht richtig ausliest. Aber der Thread ist nicht Linux spezifisch. Deswegen ab in das C++ Forum
-
Hmm,
ich hab vorhin hier irgendwas von eingabepuffer lehren gelesen,
da es auf einem anderen compiler läuft und bei mir nicht könnte
es ja das sein oder?Naja, ich versteh halt noch nicht viel von
c++.Wenn das stimmt was ich denke ging das irgendwie so:cin.sync //oder cin.sync()
Naja wird es wohl nicht sein,
ich probiers mal aus.Vielen dank für die vielen antworten,
ich freu mich jetzt einmal schon über die
zukünftigen.cu Max
-
Jo,
wäre cool wenn mir jemand helfen könnte,
es läuft also immer noch nicht aber der code muss
ja eigentlich stimmen, was muss ich tun?Vielen dank im vorraus
Max
-
#ifdef HAVE_CONFIG_H #include <config.h> #endif //wichtige Header Dateien #include <iostream.h> #include <stdlib.h> int main(){ //Variablen erzeugen float erste_zahl; float zweite_zahl; char rechenzeichen; float ergebniss; //eingabe der zahlen cin >> erste_zahl; cin.sync(); cin.clear(); cin >> rechenzeichen; cin.sync(); cin.clear(); cin >> zweite_zahl; cin.sync(); cin.clear(); //Auslesung des Rechenzeichens und die daraus resultierende berechnung if (rechenzeichen == '+') ergebniss = erste_zahl + zweite_zahl; else if (rechenzeichen == '-') ergebniss = erste_zahl - zweite_zahl; else if (rechenzeichen == '*') ergebniss = erste_zahl * zweite_zahl; else if (rechenzeichen == '/') ergebniss = erste_zahl / zweite_zahl; //Ausgabe des ergebnisses cout << ergebniss; return 0; }
Probier das mal, mehr fällt mir auch nicht ein.
Code-Hacker
-
Jo,
ersteinmal vielen dank wegen der zahlreichen antworten,
besonders an Code-Hacker.Leider geht das programm
trotz der zahlreichen verränderungen immer noch nicht,
also man kann bekommt als ergebniss eine 0 bevor man
die dritte zahl eingeben kann,also beim dritten cin.
Naja vielleicht findet ja noch jemand den Fehler,
wäre nett.cu Max
-
Jo,
ist nun auch nicht so schlimm,
programmier ich halt wieder unter windoof.
Was solls?, falls jemand doch ne lösung hat
würd ich mich darüber freuen.Nochmals vielen dank und cu
Max
-
wie wär's mit cin.ignore() od. cin.ignore(cin.rdbuf()->in_avail()) vor dem einlesen?
#include <iostream> /* die neuen header sind ohne .h */ #include <cstdlib> /* die alten c-header ohne .h und mit c vorne dran */ using namespace std; //alles in den headern steht im namensraum std //der erst aufgemacht werden muss. int main(){ //Variablen erzeugen ist am Anfang schlecht. Erzeug sie, wenn du sie //brauchst. //eingabe der zahlen double erste_zahl; //einfach gleich double. cin >> erste_zahl; char rechenzeichen; cin >> rechenzeichen; double zweite_zahl; cin >> zweite_zahl; //Auslesung des Rechenzeichens und die daraus resultierende berechnung //vielleicht wäre dafür ne extra funktion schon schön :) double ergebnis; if (rechenzeichen == '+') { //gruppieren und einrücken sind ein muss; ergebnis = erste_zahl + zweite_zahl; //zumindest am anfang. } else if (rechenzeichen == '-') { ergebnis = erste_zahl - zweite_zahl; } else if (rechenzeichen == '*') { ergebnis = erste_zahl * zweite_zahl; } else if (rechenzeichen == '/') { ergebnis = erste_zahl / zweite_zahl; } //Ausgabe des ergebnisses cout << ergebnis << '\n'; //'\n' mit ausgeben ist nett ;) return 0; //return 0; ist überflüssig. }
funktioniert bei mir (gcc 3.2) prima...
statt den 3zeilen einlesen ginge auch:
cin >> erste_zahl >> rechenzeichen >> zweite_zahl;
gib ein 3 + 7 (ohne enter dazwischen) und drück am ende enter.
wenn du's so machst, dann lass auf jedenfall das sync/ignore weg.ps ergebnis schreibt man mit einem s
-
Jo,
vielen dankfür deine antwort ich werd´s
gleich ausprobieren.Die vielen Fehler
kommen dadurch das ich ganz neu in c++ bin.Da meine Hilfe unter windows(Visual c++ autoran)und
linux(Kdevelop 2,1)nicht geht muss ich alles aus
Büchern und tuts lernen, kennt jemand eine gute
Befehlsliste zu Kdevelop oder Visual c++ falls es
soetwas geben sollte?Vielen dank im vorraus.(und nachherraus)
cu Max