C++ brauche Hilfe bei Taschenrechner

10/15/2010 21:22 ©rossi™#1
Hi,
ich habe versucht in c++ einen Taschenrechner zu programmieren.
Soweit so gut wie es dann bei sowas fast immer ist, wenn man es das erste Mal macht , es geht nicht :(.
Ich weiß einfach nicht woran es liegen kann hier ma mein code:
Code:
#include<iostream>
using namespace std;

int main()
{
int plus=1;
int minus=2;
int mal=3;
int geteilt=4;
int auswahl;
int zahl1;
int zahl2;
int ergebnis;

cout<<"Was wollen sie rechnen? Plus(1), Minus(2), Mal(3), Geteilt(4).\n";
cin>>auswahl;
cout<<"Gebe sie die erste Zahl ein.\n";
cin>>zahl1;
cout<<"Gebe sie die zweite Zahl ein.\n";
cin>>zahl2;

if(auswahl==plus)
{
ergebnis=zahl1+zahl2;
cout<<"Das Ergebnis ist"<<ergebnis;
}
else(auswahl==minus)
{
    ergebnis=zahl1-zahl2;
    cout<<"Das Ergebnis ist"<<ergebnis;
}
else(auswahl==mal)
{
    ergebnis=zahl1*zahl2;
    cout<<"Das Ergebnis ist"<<ergebnis;
}
else(auswahl==geteilt)
{
    ergebnis=zahl1/zahl2;
    cout<<"Das Ergebnis ist"<<ergebnis;
}
}
hoffe ihr könnt mir helfen :handsdown:
mfg
10/15/2010 21:33 ms​#2
Nach jedem else schreibst du eine weitere Bedingung. Es muss also "else if" heißen.
10/15/2010 21:34 Mr. Pancake-Trader#3
Also ich poste dir jetzt nich n Source^^ Da gabs mal irgeneinen xD
Du sollst ja auch n bisschen nachdenken ;)
Du solltest das ganze via:


Quote:
Originally Posted by C++ Code Idee
cout<<"Gebe deine Rechnung ein\n";
cin>>Zahl1, Rechenzeichen, Zahl2;

Switch
Case Rechenzeichen
+
-
*
/
else (Weis grad net den Ausdruck für die Switch Abfrage, aber du weist was ich mein)
cout<<"Du hast kein Rechenzeichen angegeben!\n";
10/15/2010 21:37 scenebase#4
[Only registered and activated users can see links. Click Here To Register...]

Versuch es lieber so, anstatt da dauerhaft ein else hin zu machen obwohl du nur eine if abfrage hast.
10/15/2010 21:40 ©rossi™#5
Quote:
Originally Posted by Disconnect View Post
Nach jedem else schreibst du eine weitere Bedingung. Es muss also "else if" heißen.
thx das wars ;)
Danke auch für die Vorschläge mit den switch befehlen werd ich mir auchnomma angucken
mfg
10/15/2010 23:42 MoepMeep#6
Quote:
Originally Posted by Mr. Pancake-Trader View Post
Also ich poste dir jetzt nich n Source^^ Da gabs mal irgeneinen xD
Du sollst ja auch n bisschen nachdenken ;)
Du solltest das ganze via:
jo nice, switch-case'n wir ne wildcard, noch mehr schlaue ideen?


@Rhilor Are you serious? Mal ganz ehrlich, wtf?! Bring den neuen doch bitte nicht so einen Stil bei.

Wenn schon, dann so

Code:
#include <iostream>
 
using namespace std;
 
int main()
{
    int ergebnis;
    int auswahl;
    int zahl1,zahl2 = 0;
 
 
    cout << "Was wollen sie rechnen?" << "\n" << "Plus(1), Minus(2), Mal(3), Geteilt(4)" << endl;
    cin >> auswahl;
 
    cout << "Bitte erste Zahl eingeben" << endl;
    cin >> zahl1;
 
    cout << "Bitte zweite Zahl eingeben" << endl;
    cin >> zahl2;
 
    switch(auswahl)
    {
        case 1: ergebnis = zahl1 + zahl2;
                break;
 
        case 2: ergebnis = zahl1 - zahl2;
                break;
 
        case 3: ergebnis = zahl1 * zahl2;
                break;
 
        case 4: ergebnis = zahl1 / zahl2;
                break;
        default:
                  cout << "Falsche Eingabe" << endl;
    }
    cout << ergebnis << "\n";
    cin.get();
    return 0;
}
Für vergessene Semikolons und sonstigen Kleinkram übernehm ich keine Haftung :p
10/16/2010 00:27 scenebase#7
Quote:
Originally Posted by MoepMeep View Post
@Rhilor Are you serious? Mal ganz ehrlich, wtf?! Bring den neuen doch bitte nicht so einen Stil bei.
tut mir leid :( mir war aber irgendwie schon klar das du hier rein schreibst und mich verbessern wirst.
10/16/2010 00:32 bloodx#8
Joa Moep muss überall seinen Senf dazu geben auch wenn es meistens nix gescheites ist. :)

Aber naja Rhilor du solltest trotzdem probieren falls du jemanden versuchst eine Lösung zu präsentieren dass sie auch Richtig + Logisch ist.
10/16/2010 01:09 scenebase#9
Quote:
Originally Posted by bloodx View Post
Joa Moep muss überall seinen Senf dazu geben auch wenn es meistens nix gescheites ist. :)

Aber naja Rhilor du solltest trotzdem probieren falls du jemanden versuchst eine Lösung zu präsentieren dass sie auch Richtig + Logisch ist.
i'm sorry :< hab nicht richtig nachgedacht als ich die "Lösung" geschrieben habe.
10/16/2010 10:10 ©rossi™#10
Quote:
Originally Posted by MoepMeep View Post
jo nice, switch-case'n wir ne wildcard, noch mehr schlaue ideen?


@Rhilor Are you serious? Mal ganz ehrlich, wtf?! Bring den neuen doch bitte nicht so einen Stil bei.

Wenn schon, dann so

Code:
#include <iostream>
 
using namespace std;
 
int main()
{
    int ergebnis;
    int auswahl;
    int zahl1,zahl2 = 0;
 
 
    cout << "Was wollen sie rechnen?" << "\n" << "Plus(1), Minus(2), Mal(3), Geteilt(4)" << endl;
    cin >> auswahl;
 
    cout << "Bitte erste Zahl eingeben" << endl;
    cin >> zahl1;
 
    cout << "Bitte zweite Zahl eingeben" << endl;
    cin >> zahl2;
 
    switch(auswahl)
    {
        case 1: ergebnis = zahl1 + zahl2;
                break;
 
        case 2: ergebnis = zahl1 - zahl2;
                break;
 
        case 3: ergebnis = zahl1 * zahl2;
                break;
 
        case 4: ergebnis = zahl1 / zahl2;
                break;
        default:
                  cout << "Falsche Eingabe" << endl;
    }
    cout << ergebnis << "\n";
    cin.get();
    return 0;
}
Für vergessene Semikolons und sonstigen Kleinkram übernehm ich keine Haftung :p
thx das sieht gut aus und geht auch iwie einfacher als mit den ganzen ifs :P

mfg
10/16/2010 10:25 MoepMeep#11
Quote:
Originally Posted by bloodx View Post
Joa Moep muss überall seinen Senf dazu geben auch wenn es meistens nix gescheites ist. :)

Aber naja Rhilor du solltest trotzdem probieren falls du jemanden versuchst eine Lösung zu präsentieren dass sie auch Richtig + Logisch ist.
Klappe kevin :p

@topic Was du natürlich noch machen musst, ist division durch 0 abfangen ;)
10/16/2010 23:21 MrSimonKeks#12
Wo gerade das Thema Problem beim selbstgeschriebenen Taschenrechner aufgegriffen wird hab da auch ein Problem :D.Bin noch Anfänger also hab nicht so die Ahnung und versucht ,,mit meinen eigenen Worten" ein Taschenrechner zu programmieren.Der Taschenrechner an sich funktioniert auch,aber ich habe eine Frage eingebaut, die nach jeder Rechnung fragt ob das Programm beendet werden soll.Leider interessiert es dem Compiler nicht wirklich das er bei eintippen von j das Programm beenden soll und beim eintippen von n wieder die ,,Schleife" einspielen soll. Nunja vllt. könnt ihr mir helfen...das ist der Code:
Code:
#include<iostream> //include Befehle
#include<string>
#include<vector>
#include<algorithm>
#include<cmath>
#include<cstdlib>
//----------------------------
using namespace std;
inline void keep_window_open() {char ch; cin>>ch;} //window offen halten
//-----------------------------------------------------
int main()
{
    cout<<"------------------------Wilkommen-------------------------\n";
    cout<<"----------------------------------------------------------\n";
    cout<<"-----------Dies ist ein Programm von Simon----------------\n";
    cout<<"-----------Es gibt bald Zahlreiche Funktionen-------------\n";
    cout<<"-----------Was wollen sie machen?-------------------------\n";
    cout<<"-----------Moegliche Funktionen:--------------------------\n-Taschenrechner\n"; //Mögliche Funktionen aufgelistet
    cout<<"Geben sie ihre gewuenschte Funktion ein:\n";
    string eingabe; //noch nicht benötigt da nur eine Funktion vrhanden ist
    cin>>eingabe; //--//-- (speichert eingabe)
    //---------------------------------------------------------------------------------------
    Schleife1:
    cout<<"Moegliche Rechenarten:\n-Addition(+)\n-Subtraktion(-)\n-Multiplikation(*)\n-Division(/)\n"; //mögliche Rechenarten aufgelistet
    cout<<"Aufgabe(ACHTUNG!:Hinter der Aufgabe kein = setzen dann beendet sich das programm):"; //zu schreibende Aufgabe
    double x; //x=erste Zahl die auch Gleitkomma zahl sein kann
    cin>>x; //erste geschriebene Zahl abschpeichern
    char zeichen; //rechenzeichen ist char
    cin>>zeichen; //rechenzeichen abspeichern
    double y; //y ist zweite zahl (Gleitkomma)
    cin>>y; //zweite Zahl abschpeichern
    //------------------------------------------------------------------
    char mal; //mal ist char
    mal='*'; //mal entspricht den maschinenmalzeichen *
    char plus; //plus ist char
    plus='+'; //plus entspricht dem Zeichen +
    char geteilt; //geteilt ist char
    geteilt='/'; //geteilt entspricht zeichen /
    char minus; //minus ist char
    minus='-'; //minus entspricht zeichen -
    char wurzel; //noch nicht verwendet
    wurzel='~'; //noch nicht verwendet
    //----------------------------------------------------------------
    if(zeichen==plus)cout<<"Ergebnis (Addition):"<<x+y<<"\n"; //wenn das zeichen ein plus (+) ist dann soll er jenes ergebnis herausgeben
    if(zeichen==minus)cout<<"Ergebnis (Subtraktion):"<<x-y<<"\n"; //wenn das zeichen ein minus (-) ist dann soll er jenes ergebnis herausgeben
    if(zeichen==mal)cout<<"Ergebnis (Multiplikation):"<<x*y<<"\n"; //wenn das zeichen ein mal (*) ist soll er jenes ergebnis herausgeben
    if(zeichen==geteilt)cout<<"Ergebnis (Division):"<<x/y<<"\n"; //wenn das zeichen ein geteilt (/) ist dann soll er jenes ergebnis herausgeben
    //----------------------------------------------------------------------
    cout<<"Ende?(j/n): "; //ausschalten Frage
    char jn;//jn ist char
    cin>>jn;//jn  einschpeichern
    //--------------------
    char j=j;//j ist char und hat den wert j
    char n=n;//n ist char und hat den wert n
    //--------------------
    if(jn==n)
    {
             keep_window_open();goto Schleife1; //wenn char jn gelich ist mit char ndann halte fenster offen und gehe zu Schleife1
}         
    else if(jn==j)
    {
         return 0; //wenn jn gleich ist mit j dann programm beenden
}     
    //-----------------------
}
10/16/2010 23:36 MrSm!th#13
Quote:
Originally Posted by BliszZ View Post
Code:
cout<<"Ende?(j/n): "; //ausschalten Frage
    char jn;//jn ist char
    cin>>jn;//jn  einschpeichern
    //--------------------
    char j=j;//j ist char und hat den wert j
    char n=n;//n ist char und hat den wert n
    //--------------------
    if(jn==n)
    {
             keep_window_open();goto Schleife1; //wenn char jn gelich ist mit char ndann halte fenster offen und gehe zu Schleife1
}         
    else if(jn==j)
    {
         return 0; //wenn jn gleich ist mit j dann programm beenden
}     
    //-----------------------
}
es muss
Code:
char j= 'j';
//und
char n='n';
sein
10/16/2010 23:40 MrSimonKeks#14
Danke!!! Ich bin so dumm -.-
10/17/2010 00:11 Bot_interesierter#15
[Only registered and activated users can see links. Click Here To Register...]