logikfehler, int in double, help pls



  • #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        char satz[100];
        int i=0,zaehler=0;     
        double ergebnis;
        printf("geben sie bitte einen satz ein.");
        gets(satz);
    
             while(satz[i]!='\0'){
             if(satz[i]=='e'){
             zaehler++;
             }
             i++;
             }
             ergebnis=100/i*zaehler;
             printf("e ist zu %.2lf %%enthalten.",ergebnis);
    
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    Hi, wie kriege ich es hin, dass ich das ergebnis mit nachkommstellen anzeigen kann. bei eingabe:"eer" zeigt er 66,00% an, statt 66,66%.
    pls help
    MFG 🙂


  • Mod

    ergebnis=100.0/i*zaehler;

    Und es ist übrigens nicht zu gerne gesehen, wenn jemand rumbettelt.



  • Die Berechnung von ergebnis=100/i*zaehler; erfolgt als Integer, da alle beteiligten Werte auch Integers sind.
    Ein ergebnis=100.0/i*zaehler; (achte auf das .0) hilft da.

    Bei printf reicht auch das %f für double.
    printf hat eine variable Argumentenliste und da werden alle float nach double gewandelt. ( ⚠ nicht bei scanf machen).

    Arbeite an deinem Einrückungsstil



  • wieso rumbetteln?? ich kam bei dem problem net weiter, da ist doch nur normal wenn man um hilfe bittet?? und das ist echt net so, dass ich nicht selber versuche, das Problem zu beheben. Naja danke für die Hilfe auf jeden Fall.



  • Ich glaube, Du hast es mit dem "pls help" etwas zu gut gemeint.

    "Könnte bitte mal jemand nachsehen, woran es da hapert?"
    wird wahrscheinlich besser aufgenommen, als ein (falsch) interpretierbares
    "plz h3lp m3, is dringendst!!!11111".

    Ist das Grundproblem dann soweit klar? Nicht, dass Du morgen den nächsten Thread zur Gleitkommaberechnung hast ;o)


Anmelden zum Antworten