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