Calculator



  • Hi!

    Ich möchte mir mit C++ einen kleinen Rechner basteln und nun stehe ich vor dem Problem, dass ich als divident und als divisor einen integer benutze.
    Das ergebnis ist 'int output', also ebenfalls ein integer.
    Wenn man jetzt als divident 5 und als divisor 3 eingibt gibt er aber keine Stellen hinter dem Komma aus.
    Gibt es eine art von Variable, die auch Dezimalzahlen ausgibt?

    Danke für die Hilfe.

    MfG Schrimms



  • double?



  • double und float



  • 1. oben rechts gibt es etwas das "Suchen" heißt. (siehe dazu auch www.gidf.de)

    2. float, double, etc.



  • Juhu endlich kann ich auch mal auf was Antworten sonst bin ich nur am Fragen 🤡

    Ja du kannst double nehmen oder float long double gibt es auch :>

    Hier ein leichtes beispiel mit float.

    //---------------------------------------------------------------------------
    #include <iostream>
    using namespace std;
    
    int main()
    {
    float a,b,erg;
    
    cout<<"Erste Zahl: ";
    cin>>a;
    
    cout<<"Zweite Zahl: ";
    cin>>b;
    
    erg = a/b;
    
    cout<<erg;
    
    cin.get();
    }
    //---------------------------------------------------------------------------
    


  • Es hat geklappt, habe einfach int durch float ersetzt und nun zeigt es einige Stellen hinter dem Komma an.

    Danke!

    MfG Schrimms



  • Mir schon klar, dass du mit dem Bsp. nur zeigen wolltest, worum es eigtl geht... Aber ich finde, dass man keine unvollständigen Bsp. posten sollte - zumindest sollte man noch nen kommentar reinmachen, dass da noch was fehlt...

    Außerdem find ich so was wie "float a,b,erg;" doof... meiner meinung nach sollte sich jeder angewöhnen, variablen erst zu deklarieren, wenn man sie auch braucht - und vor allem so was, wie "erg" braucht man da noch lang nicht...

    #include <iostream> 
    using namespace std; 
    
    int main() 
    { 
    cout<<"Erste Zahl: "; 
    float a;
    cin>>a; 
    //überprüfung auf richtige eingabe... (keine buchstaben etc...)
    
    cout<<"Zweite Zahl: "; 
    float b;
    cin>>b;
    //überprüfung auf richtige eingabe... (keine buchstaben etc und keine 0...)
    
    //0 sollte man aber auch durch nen try / catch block abfangen sollen glaub ich ^^ habs noch nie so weit kommen lassen...
    /*also so was in der art:
    try
    {
    const float erg = a/b; 
    cout << erg;
    }
    catch (...)
    {
    return EXIT_FAIL;
    };*/
    const float erg = a/b; 
    
    cout << erg; 
    
    cin.get();
    }
    

    bb



  • unskilled schrieb:

    Außerdem find ich so was wie "float a,b,erg;" doof... meiner meinung nach sollte sich jeder angewöhnen, variablen erst zu deklarieren, wenn man sie auch braucht

    geschmackssache 😉



  • Was ist besser?

    int a, b; //b wird nie verändert, kann aber nicht als const deklariert werden...
    std::cin >> a;
    b = a;
    

    oder

    int a;
    std::cin >> a;
    const int b (a);
    

    Oo

    bb...



  • int a,c,d,e,f; //natürlich mit treffenden namen
    const int b,g,h,i,j,k; 
    /*
    ...
    ...
    ...
    */
    

    Aber: Jedem das seine 😉



  • int a;
    const int b;
    std::cin >> a;
    b = a;
    

    mit welchem kompiler soll das gehen? Oo


  • Administrator

    Fencer schrieb:

    int a,c,d,e,f; //natürlich mit treffenden namen
    const int b,g,h,i,j,k; 
    /*
    ...
    ...
    ...
    */
    

    Aber: Jedem das seine 😉

    Aus folgendem Grund ist das eine schlechte Idee:

    void foo()
    {
        int a,c,d,e,f; // natürlich mit treffenden namen
        const int b,g,h,i,j,k;
        CBigObject BigObject;
        /* ... */
    
        if(/* ... */)
        {
            /* ... */
            return;
            // Jetzt hast du gerade Speicher angefordert, welcher du nicht brauchst.
        }
    
        /* ... Verwendung anderer Variablen ... */
    }
    

    Zudem kommen noch weitere Probleme dazu. Variablen sollte man initialisieren und zwar sobald man sie erstellt. Das geschieht hier nicht. Und wenn man sie mit einem NULL Wert initialisiert, hat man eine zusätzliche unnötige Schreiboperation.

    Nächtes Problem ist die Wartung. Wenn du plötzlich eine Variable nicht mehr brauchst, dann löschst du die erste Verwendung und vielleicht das danach, aber es kann leicht passieren, dass du die Variable am Anfang vergisst und somit eine Variable hast, welche du gar nicht erst verwendest.

    Deshalb immer Variablen wirklich erst dann anlegen, wenn du sie benötigst! Das hat nicht wirklich etwas mit Geschmackssache zu tun, sondern hat seine Gründe.

    Grüssli


Log in to reply