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)


Log in to reply