Anfänger: Frage zur Berechnung des Durchschnitts



  • Hallo zusammen,

    kann mir Jemand sagen warum folgender Code nicht funktioniert?

    Programmablauf:

    Bitte geben Sie die Anzahl der gespielten Löcher ein:
    18
    Bitte geben Sie die benötigten Schläge ein:
    40
    Sie brauchen durchschnittlich 2.22 Schläge pro Loch.

    Code:

    ------------------------------------------------------------------------------

    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {

    char holes1[2];
    int holes2;

    char strokes1[2];
    int strokes2;

    float average;

    printf("Wie viele Loecher hast Du gespielt?\n");
    scanf("%i", &holes1);
    holes2 = atoi(holes1);

    printf("Wie viele Schlaege wurden benoetigt?\n");
    scanf("%i", &strokes1);
    strokes2 = atoi(strokes1);

    average = strokes2/holes2;

    printf("Du hast durchschnittlich %.2f Schlaege pro Loch benoetigt.\n", average);

    return(0);

    }

    --------------------------------------------------------------------------------

    Vielen Dank vorab für die Hilfe!

    Gruß,
    Marc
    [code][cpp]



  • 1. %i (und auch %d) bei scanf liest schon ein int ein. Da brauchst du kein char-Array.
    2. Den Adress-Operator (&) auf ein Array loszulassen ist selten sinnvoll.
    3. Integerberechnungen ergeben Integerergebnisse.

    int holes;
    int strokes;
    
    double average;
    
    scanf("%d", &holes);
    scanf("%d", &strokes);
    
    average = (double)strokes2/holes2;
    

    Du mußt noch überprüfen ob scanf() überhaupt Werte eingelesen hat.
    Das geht mit dem Rückgabewert von scanf()



  • Klappt jetzt.

    Ist noch alles sehr neu für mich....

    🙂



  • Onlinetourist schrieb:

    Klappt jetzt.

    Ist noch alles sehr neu für mich....

    🙂

    Dann nimm dir ein Buch. Aus Papier.
    Zumindest die Punkte 1 und 2 wären dann nicht aufgetreten.

    Bücher kann man auch ausleihen.



  • Das Design des Programmes ist mangelhaft, du wechselst zwischen int und float/double hin und her.
    Für die Aufgabenstellung reichen 3 Variablen vom Typ double aus und dann klappt es auch:

    http://ideone.com/jEGDk



  • Das war mein erstes Programm das ich je geschrieben habe...

    Bücher habe ich genug nur ein generelles Programmierverständnis
    fehlt mir noch.... Bin aber dran.


Anmelden zum Antworten