Taschenrechner



  • Also, ich bin noch ein beginner und habe mich mal rangesetzt und versucht ein taschenrechner zu machen!
    Das was er noch machen sollte und ich gern möchte...
    1.Ich möchte das man auch mit kommazahlen rechnen kann ( das ergebniss wird in kommazahlen angezeigt!)
    2. Ich möchte, dass wenn er benutzt wurde sich nich wieder schließt, sondern das man ihn wieeder und wieder benutzen kann bis der anwender es schließt.
    (3. Ein anderes Design, aber ich glaub das wird eher zu schwer.)
    4. Und das er vielleicht weiter rechnet als 20.000.

    Ich baller einfach mal den ganzen code rein 😃
    Die vielen leeren zeilen sind für ne bessere übersicht, die ich einfach brauche.
    Es ist vielleicht alles leicht geschrieben und ich möcht gern dass es so bleibt^^, falls es nich geht, nich schlimm.
    Und bitte erklärt mit zb. // "-" dahinter was diese funktion genau macht damit ich mir es fürs spätere merken kann.

    #include <iostream>
    
    using namespace std;
    
    const int DECIMAL_ADJ = 10000;
    
    int main()
    {
    
        cout<<"Taschenrechner!!\n";
        cout<<"Nur ganze Zahlen benutzen!!\n";
        cout<<"\n\n";
    
        int zahl1 = DECIMAL_ADJ * 1.0;
        int zahl2 = DECIMAL_ADJ * 1.0;
        int zahl3 = DECIMAL_ADJ * 1.0;
        int zahl4 = DECIMAL_ADJ * 1.0;
        int zahl5 = DECIMAL_ADJ * 1.0;
        int zahl6 = DECIMAL_ADJ * 1.0;
    
        cout<<"Gib Deine erste Zahl ein:  \n"; cin>>zahl1;
        cout<<"Gib Deine zweite Zahl ein:  \n"; cin>>zahl2;
    
        zahl3 = (zahl1 * DECIMAL_ADJ) + zahl2;
        zahl4 = (zahl1 * DECIMAL_ADJ) * zahl2;
        zahl5 = (zahl1 * DECIMAL_ADJ) - zahl2;
        zahl6 = (zahl1 * DECIMAL_ADJ) / zahl2;
    
        cout<<"\n\nAddition betraegt:       " <<(1.0* zahl1 + zahl2);
        cout<<"\nMultiplikation betraegt: " <<(1.0 * zahl1 * zahl2);
        cout<<"\nSubtraktion betraegt:    " <<(1.0 * zahl1 - zahl2);
        cout<<"\nDivision betraegt:       " <<(1.0 * zahl1 / zahl2);
        cout<<"\n\n";
        cout<<"\n\n";
    
        system("PAUSE");
        return 0;
    }
    

    Achja und könnte man mir noch kurz sagen was DECIMAL_ADJ ist? Und erklärt es auch bitte so das es ein "laie" kapiert^^, in mathe bin ich auch nich der held und kenne noch nich viele fachbegriffe! (vllt Fachbegriff mit bedeutung hintenran schreiben)
    Erst ging nichts mit den kommazahlen. Irgentwo hab ich das mit DECIMAL_ADJ aufgeschnappt, probiert und halbewgs erfolgreich gewesen.

    Ihr könnt den "script" kopieren und Testen!

    (Mit Dev c++ geschrieben)

    Danke im vorraus für die antworten



  • Idf schrieb:

    1.Ich möchte das man auch mit kommazahlen rechnen kann ( das ergebniss wird in kommazahlen angezeigt!)

    Nimm dafür Fliesskommazahlen, z.B. float oder double .

    Idf schrieb:

    2. Ich möchte, dass wenn er benutzt wurde sich nich wieder schließt, sondern das man ihn wieeder und wieder benutzen kann bis der anwender es schließt.

    Am besten realisierst du das über eine Schleife (hier passt wohl do - while ). Am Ende der Berechnung fragst du den Benutzer, ob er nochmals rechnen will, wenn ja, wiederholst du die Schleife.

    Idf schrieb:

    4. Und das er vielleicht weiter rechnet als 20.000.

    Geht denn das jetzt nicht?

    Idf schrieb:

    Achja und könnte man mir noch kurz sagen was DECIMAL_ADJ ist?

    Eine globale int -Konstante.

    Idf schrieb:

    Und erklärt es auch bitte so das es ein "laie" kapiert^^, in mathe bin ich auch nich der held und kenne noch nich viele fachbegriffe! (vllt Fachbegriff mit bedeutung hintenran schreiben)

    Es geht nicht um Mathe. Aber du solltest dich unbedingt mit den Grundlagen der C++-Programmierung auseinandersetzen, sonst kommst du auf keinen grünen Zweig. Ich würde auch nicht irgendwelche Dinge zusammenkopieren, die ich nicht verstehe. Kauf dir ein gutes C++-Buch oder leih dir zumindest eins aus (z.B. C++-Primer, Thinking in C++ (gibts auch gratis als Online-PDF)). Aber die Programmiersprache C++ ist auch so komplex genug und braucht viel Geduld und Zeit zu lernen. Wenn du da nicht genügend Motivation besitzt, machst du dir es nicht gerade leichter.



  • also: kommazahlen:
    für kurze kommazahlen float statt int schreiben, für länbgere double und für ganz lange long double.
    2. nicht schließen: pack das ganze in ne endlosschleife:

    for(;;)
    {
    //taschenrechnercode
    }
    

    3. dazu müsstet du windowsforms programmieren was für anfänger eher nicht empfehlenswert ist, du musst erstmal konsolenanwendungen beherrschen lernen.
    4. einfach long vor int schreiben ->long int

    außerdem wäre dein code wesentlich besser lesbar, wenn du in niht als Code((code)(/code)) sondern cpp-code ((cpp)(/cpp)) eingeben würdest(natürlich eckige klammern statt runde).

    im Übrigen hat Nexus völlig Recht: du solltest auch verstehen was du da an code schreibst und nicht einfach nur kopieren, immerhin musst du deinen code auch selbst schreiben können, es wird sich kaum einer finden der hier immer ne komplette musterlösung shreibt.

    mfg,
    andi01.



  • Ich hab hier mal was für die geschrieben.

    Sollte alles drin sein bis auf die Sache mit den Kommazahlen die weiss ich gerade auch net auswendig ^^

    Aber du sollst ja auch noch etwas machen (=

    #include <iostream>
    using namespace std;
    
    int main()
    {
    
    short auswahl;
    bool wiederhole;
    
    long double zahl1;
    long double zahl2;
    
    long double zahl3;
    long double zahl4;
    long double zahl5;
    long double zahl6;
    
    do    // alles was zwischen do und while steht gehört zur fußgesteuerten schleife
    {
    
    cout<<"Erste Zahl eingeben: \n";
    cin>>zahl1;
    
    cout<<"Erste Zahl eingeben: \n";
    cin>>zahl2;
    
    zahl3 = zahl1 + zahl2;
    zahl4 = zahl1 - zahl2;
    zahl5 = zahl1 * zahl2;
    zahl6 = zahl1 / zahl2;
    
    cout<<"Addition Ergebniss: "       << zahl3 << "\n\n";
    cout<<"Subtraktion Ergebniss: "    << zahl4 << "\n\n";
    
    cout<<"Multiplikation Ergebniss: " << zahl5 << "\n\n";
    
    cout<<"Division Ergebniss: "       << zahl6 << "\n\n";
    
    cout<<"Wollen Sie eine neue Berechnung starten ? Ja = 1    Nein = 2 ";
    cin>>auswahl;
    
            if ( auswahl == 1) // wenn man eine 1 eingibt bekommt die variable auswahl den wert 1
            {
                    wiederhole = true;
            }
    
            else  // wenn nicht 1 eingeben wurde wird das programm beendet
            {
              return 0;
            }
    
    }
    while (wiederhole == true); // solange wiederhole = true fängt das programm immer wieder von vorne an
    
    system("PAUSE");
    return 0;  
    }
    


  • Ich danke euch für die schnellen und hilfreichen antworten!

    Ich habe nur DECIMAL_ADJ kopiert, weil ich nicht wusste wie man das mit den kommazahlen macht, das andere ist selbstgeschrieben.

    Tutorials und auch vllt Bücher oder sonstiges werde ich mir in laufe der zeit jetz angucken.

    Danke 😉



  • Ich danke euch für die schnellen und hilfreichen antworten!

    Ich habe nur DECIMAL_ADJ kopiert, weil ich nicht wusste wie man das mit den kommazahlen macht, das andere ist selbstgeschrieben.

    Tutorials und auch vllt Bücher oder sonstiges werde ich mir in laufe der zeit jetz angucken.

    Danke 😉

    und nein bisher hat mein taschenrechner nur bis 20000 gerechnet. wenns da über war kam irgentwas heraus.



  • Das beste C++ Tutorials welches ich bis jetz gefunden habe:

    http://www.cpp-tutor.de/cpp/hinweise.html

    Hier noch was zu Variablen von der Seite von Erhard Henkes
    http://www.henkessoft.de/C++/C++/cpp_konsole.htm

    Der schreibt hier auch öfters im Forum. ^^

    1.2. Variablen und einfache Datentypen 
    
    Mit int zahl deklarieren wir eine Integer-Variable. Wir reservieren bei einem 32-Bit-Rechner 4 Byte Speicherplatz für eine vorzeichenbehaftete Ganzzahl. 4 Byte entsprechen 4 * 8 = 32 Bit. 
    Damit können wir binär einen Ganzzahlenbereich von 2 hoch 32 =  4 294 967 296 abdecken. 
    
    Dieser Bereich ist für int (32 Bit) heutzutage - 2 147 483 648 ... 0 ... 2 147 483 647. 
    
    Es gibt auch die Möglichkeit nur positive Ganzzahlen und die Null zuzulassen. Hierfür stellt man ein unsigned vor das int: 
    unsigned int  umfaßt  0 ... 4 294 967 295 (32-Bit-Maschinen). 
    
    Sie sehen, dass int automatisch signed int bedeutet. Solche Details findet man üblicherweise in der Datei limits.h. 
    Dort findet man die Grenzen für die einzelnen Variablentypen: char, short, int, long, ... 
    
    ... 
    
    #define SHRT_MIN    (-32768)        /* minimum (signed) short value */ 
    #define SHRT_MAX      32767         /* maximum (signed) short value */ 
    #define USHRT_MAX     0xffff        /* maximum unsigned short value */ 
    #define INT_MIN     (-2147483647 - 1) /* minimum (signed) int value */ 
    #define INT_MAX       2147483647    /* maximum (signed) int value */ 
    #define UINT_MAX      0xffffffff    /* maximum unsigned int value */ 
    #define LONG_MIN    (-2147483647L - 1) /* minimum (signed) long value */ 
    #define LONG_MAX      2147483647L   /* maximum (signed) long value */ 
    #define ULONG_MAX     0xffffffffUL  /* maximum unsigned long value */ 
    
    #if     _INTEGRAL_MAX_BITS >= 8 
    #define _I8_MIN     (-127i8 - 1)    /* minimum signed 8 bit value */ 
    #define _I8_MAX       127i8         /* maximum signed 8 bit value */ 
    #define _UI8_MAX      0xffui8       /* maximum unsigned 8 bit value */ 
    #endif 
    
    #if     _INTEGRAL_MAX_BITS >= 16 
    #define _I16_MIN    (-32767i16 - 1) /* minimum signed 16 bit value */ 
    #define _I16_MAX      32767i16      /* maximum signed 16 bit value */ 
    #define _UI16_MAX     0xffffui16    /* maximum unsigned 16 bit value */ 
    #endif 
    
    #if     _INTEGRAL_MAX_BITS >= 32 
    #define _I32_MIN    (-2147483647i32 - 1) /* minimum signed 32 bit value */ 
    #define _I32_MAX      2147483647i32 /* maximum signed 32 bit value */ 
    #define _UI32_MAX     0xffffffffui32 /* maximum unsigned 32 bit value */ 
    #endif 
    
    #if     _INTEGRAL_MAX_BITS >= 64 
    /* minimum signed 64 bit value */ 
    #define _I64_MIN    (-9223372036854775807i64 - 1) 
    /* maximum signed 64 bit value */ 
    #define _I64_MAX      9223372036854775807i64 
    /* maximum unsigned 64 bit value */ 
    #define _UI64_MAX     0xffffffffffffffffui64 
    #endif 
    
    #if     _INTEGRAL_MAX_BITS >= 128 
    /* minimum signed 128 bit value */ 
    #define _I128_MIN   (-170141183460469231731687303715884105727i128 - 1) 
    /* maximum signed 128 bit value */ 
    #define _I128_MAX     170141183460469231731687303715884105727i128 
    /* maximum unsigned 128 bit value */ 
    #define _UI128_MAX    0xffffffffffffffffffffffffffffffffui128 
    #endif 
    
    ...
    


  • wenn der taschenrechner weiter rechnen soll als 20000 schreib einfach mal long vor dein int (und falls er keine negativen zahlen brauchen sollte schreib noch unsigned davor).



  • Ich hab float anstatt int genommen. Damit läufts supi und er rechnet weiter als 20.000 glaub bis 1mio.
    Und die frage ob der nochmal starten soll hab ich weggelassen, sodass man sofort das nächste ergebniss rechnen kann.

    Danke, dass du das Tutorial rausgesucht hast, scheint viel versprechend zu sein 😃
    Ich werds mir auf jedenfall angucken


Anmelden zum Antworten