Taschenrechner
-
Jermuk schrieb:
Kennt jemand einen Code von einem Taschenrechner?
Der sollte aber folgendes können:
Beispiel: Du gibst ein: 5+9*2 Ausgabe: 5+9*2=28
Danke im voraus,
Jermuk
Nicht das man mich falsch versteht:
Man muss einfach nur den Term eingeben und dann soll der Rechner das Ergebnis anzeigen.
-
Ich habe das auch schon mal programmiert. Allerdings geht es nur mit genau zwei Operanden.
#include <stdio.h> #include <string.h> int main(void){ char rechnung[64],_operator; float erster_wert,zweiter_wert,resultat; int mult,cnt; //Rechnung einlesen printf("Rechnung: "); gets(rechnung);cnt=(int)strlen(rechnung)-1; //Zweiter Operand extrahieren mult=1; zweiter_wert=0; while(rechnung[cnt]>='0'&&rechnung[cnt]<='9'){ zweiter_wert+=(rechnung[cnt]&0x0f)*mult; mult*=10; cnt--; } //Operator extrahieren _operator=rechnung[cnt]; cnt--; //Erster Operand extrahieren mult=1; erster_wert=0; while(cnt>=0){ erster_wert+=(rechnung[cnt]&0x0f)*mult; mult*=10; cnt--; } //Resultat berechnen switch(_operator){ case '+': resultat=erster_wert+zweiter_wert; break; case '-': resultat=erster_wert-zweiter_wert; break; case '*': resultat=erster_wert*zweiter_wert; break; case '/': resultat=erster_wert/zweiter_wert; break; } //Resultat ausgeben printf("%f%c%f=%f",erster_wert,_operator,zweiter_wert,resultat); }
-
Danke!!!
Aber leider beendet sich das Programm sobald ich Enter gedrückt habe
-
Das ist normal für ein Konsolenprogramm.
Du musst das Programm halt entweder aus der Konsole heraus starten, oder am Ende folgende Zeile hinzufügen:getchar();
-
warum so kompliziert?
#include <iostream> using namespace std; int main() { long double a, b, c; int x; while(x !=0) { system("cls"); cout<<"Willkommen"<<endl; cout<<"Zwei Zahlen addieren - (1)"<<endl; cout<<"Zwei Zahlen subtrahieren - (2)"<<endl; cout<<"Zahl + Zahl * Zahl - (3)"<<endl; cin>>x; switch(x) { case 1: system("cls"); cout<<"Erste Zahl: "; cin>>a; cout<<"Zweite Zahl: "; cin>>b; a = a+b; cout<< a << " + " << b << " = " << a <<endl; break; case 2: system("cls"); cout<<"Erste Zahl: "; cin>>a; cout<<"Zweite Zahl: "; cin>>b; a = a-b; cout<< a << " - " << b << " = " << a <<endl; break; case 3: system("cls") cout<<"Erste Zahl: "; cin>>a; cout<<"Zweite Zahl: "; cin>>b; cout<<"Dritte Zahl: "; cin>>c; a = a+b*c; cout<< a <<" + "<< b << " * "<< c <<" = "<< a <<endl; break; } system("PAUSE"); } }
-
Wie lässt man denn eine Zeile frei am Ende?
//Resultat ausgeben printf("%f%c%f=%f",erster_wert,_operator,zweiter_wert,resultat); main();
Ich will nämlich eine Endlosschleife!!!
F4bio< schrieb:
warum so kompliziert?Weil ich es so kompliziert haben möchte
-
Kann dein Prog auch: 3/6*5?
-
@F4bio: Dein Programm macht überhaupt nicht das was verlangt wäre.
Das mein Code nicht unbedingt luppenrein ist, ist mir ausserdem klar.-Das muss er aber auch nicht, ich habe das ja ca. vor zwei Jahren als Übung in der Schule programmiert.
-
Ich habe doch nicht gesagt das dein Programm schlecht ist nur es ist doch übersichtlicher für IHN.
Warum sollte das Programm nicht machen was es verlangt?
Er sagt doch er will eine Zahl mit einer Zahl addieren und das Ergebnis dann multiplizieren.
-
langeweile schrieb:
Kann dein Prog auch: 3/6*5?
Nee, kann seins nicht!!!
3/6*5=2280,00000000
-
F4bio< schrieb:
Ich habe doch nicht gesagt das dein Programm schlecht ist nur es ist doch übersichtlicher für IHN.Warum sollte das Programm nicht machen was es verlangt?
Er sagt doch er will eine Zahl mit einer Zahl addieren und das Ergebnis dann multiplizieren.
Ich will es aber gerne in einem Term rechnen!!!
Sieht schöner aus!!!!!
-
Die Eingabe erfolgt nicht so wie er's möchte.-Das hat er dir eigentlich auch schon geschrieben.
Ich vermute mal, dass du mit Endlosschleife folgendes meintest:
#include <stdio.h> #include <string.h> int main(void){ char rechnung[64],_operator; float erster_wert,zweiter_wert,resultat; int mult,cnt; do{ //Rechnung einlesen printf("Rechnung: "); fflush(stdin); gets_s(rechnung,sizeof(rechnung));cnt=(int)strlen(rechnung)-1; //Zweiter Operand extrahieren mult=1; zweiter_wert=0; while(rechnung[cnt]>='0'&&rechnung[cnt]<='9'){ zweiter_wert+=(rechnung[cnt]&0x0f)*mult; mult*=10; cnt--; } //Operator extrahieren _operator=rechnung[cnt]; cnt--; //Erster Operand extrahieren mult=1; erster_wert=0; while(cnt>=0){ erster_wert+=(rechnung[cnt]&0x0f)*mult; mult*=10; cnt--; } //Resultat berechnen switch(_operator){ case '+': resultat=erster_wert+zweiter_wert; break; case '-': resultat=erster_wert-zweiter_wert; break; case '*': resultat=erster_wert*zweiter_wert; break; case '/': resultat=erster_wert/zweiter_wert; break; } //Resultat ausgeben printf("%f%c%f=%f\n<Q> -> Quit\n",erster_wert,_operator,zweiter_wert,resultat); }while(getchar()!='Q'); }
-
Er hat auch nicht verlangt das das Programm das kann warum sollte ich dann die funktion einbauen.
-
Danke!!!
Ich habs FAST so wie ich es möchte:
(Hab noch einen kleinen Schönheitsfehler korigiert)Blablabla
Was muss ich verändern, damit man am Ende (Da wo "Rechnung: " steht) nur noch Q drücken muss, damit das Programm geschlossen wird???
-
s.o.
-
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void){ char rechnung[64],_operator; float erster_wert,zweiter_wert,resultat; int mult,cnt; do{ system("CLS"); //Rechnung einlesen printf("Rechnung: "); fflush(stdin); gets(rechnung);cnt=(int)strlen(rechnung)-1; //Zweiter Operand extrahieren mult=1; zweiter_wert=0; while(rechnung[cnt]>='0'&&rechnung[cnt]<='9'){ zweiter_wert+=(rechnung[cnt]&0x0f)*mult; mult*=10; cnt--; } //Operator extrahieren _operator=rechnung[cnt]; cnt--; //Erster Operand extrahieren mult=1; erster_wert=0; while(cnt>=0){ erster_wert+=(rechnung[cnt]&0x0f)*mult; mult*=10; cnt--; } //Resultat berechnen switch(_operator){ case '+': resultat=erster_wert+zweiter_wert; break; case '-': resultat=erster_wert-zweiter_wert; break; case '*': resultat=erster_wert*zweiter_wert; break; case '/': resultat=erster_wert/zweiter_wert; break; } //Resultat ausgeben printf("Resultat: %f%c%f=%f\n-----\n<Q> -> Quit\n<ENTER> -> Next\n< >\b\b" ,erster_wert,_operator,zweiter_wert,resultat); }while(getchar()!='Q'); }
-
Dein Taschenrechner rechnet nicht korrekt! Beschäftige dich mit Rekursivem Abstieg und du kriegst ohne Probleme noch: Klammern, Punkt-Vor-Strich in deinen Rechner eingebaut
Vielleicht ist ja jemand so frei dir dafür ein Beispiel zu posten, denn ich habe gerade leider keins.
Viel Erfolg!
-
Ich hatte dem mal eine bessere Oberfläche gegeben!!!
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { char rechnung[64],_operator; float erster_wert,zweiter_wert,resultat; int mult,cnt; do{ system("CLS"); printf("Wilkommen bei Rechnomat!!!\n\n\n\n"); //Rechnung einlesen printf("Bitte geben sie ihren Term ein und bestaetigen mit <Enter>: \n\n"); fflush(stdin); gets(rechnung);cnt=(int)strlen(rechnung)-1; //Zweiter Operand extrahieren mult=1; zweiter_wert=0; while(rechnung[cnt]>='0'&&rechnung[cnt]<='9'){ zweiter_wert+=(rechnung[cnt]&0x0f)*mult; mult*=10; cnt--; } //Operator extrahieren _operator=rechnung[cnt]; cnt--; //Erster Operand extrahieren mult=1; erster_wert=0; while(cnt>=0){ erster_wert+=(rechnung[cnt]&0x0f)*mult; mult*=10; cnt--; } //Resultat berechnen switch(_operator){ case '+': resultat=erster_wert+zweiter_wert; break; case '-': resultat=erster_wert-zweiter_wert; break; case '*': resultat=erster_wert*zweiter_wert; break; case '/': resultat=erster_wert/zweiter_wert; break; } //Resultat ausgeben printf("\nDas Ergebnis von: %f %c %f\nIst gleich: %f\n\n\n\n\n"); printf("Druecken sie q zum Beenden.\n"); printf("Wenn sie Weitermachen moechten druecken bitte Enter.\n\n",erster_wert,_operator,zweiter_wert,resultat); }while(getchar()!='q'); }