Warum funktioniert Programm nicht auf meinem PC, aber auf anderen?



  • Hallo,

    wir müssen an der Uni mit Ansi C programmieren und sollen Fehler in Codes beheben - ich habe, denke ich, alles gefunden... Compiler zeigt keine Fehler - aber als AUsgabe erfolge 0.0000, ein Kommolitone hat selbiges Programm auf seinem PC ausprobiert - es geht...

    #include <stdio.h>
    #include<math.h>
    /* Funktion zur Berechnung des Kegelvolumens */
    float kegelVolumen(float radius, float hoehe)
    {
    return M_PI*radius*radius*hoehe*(1/3);
    }
    int main()
    {
    float v1,v2;
    /* Aufruf der Funktion kegelVolumen */
    v1 = kegelVolumen(2.7f, 3.1f);
    v2 = kegelVolumen(3.4f, 2.4f);
    /* Ausgabe der Ergebnisse */
    printf("v1 = %f\n", v1 );
    printf("v2 = %f\n", v2);
    printf("v3 = %f\n", kegelVolumen(5.f, 2.2f));
    getchar();
    return 0;
    }
    

    Wo liegt mein fehler? Vielen Dank!





  • Hi,

    wie schon volkard richtig verlinkt hat ergibt (1/3) = 0 da ein Ganzzahlwert keine Zahlen zwischen 0 und 1 darstellen kann. Hier musst du (1.0/3) für double oder (1.0f/3) für float verwenden.

    Um dein Programm auch unter Visual Studio zum Laufen zu bringen musst du vor dem include <math.h> noch die Konstanten aktivieren, ansonsten kann er mit M_PI nix anfangen.

    #define _USE_MATH_DEFINES
    #include <math.h>
    

    Gruß Chris



  • Vielen, vielen Dank! Es funktioniert endlich, nachdem ich schon etliche Nerven an den Aufgaben verloren habe...

    vg tine


Anmelden zum Antworten