C Anfänger - Funktion
-
Der Rückgabewert 1 wird oftmals verwendet, um einen Fehler zu signalisieren
-
ßsdgß09df0g0 schrieb:
Der Rückgabewert 1 wird oftmals verwendet, um einen Fehler zu signalisieren
selten programmintern.
-
Bezog sich auf Funktionen eines Programms, hätte ich vllt. dazu schreiben sollen.
Also programmintern.
-
hey is ja schön was mittlerweile hier diskutiert wird allerdings hilft mir das grad nicht weiter ^^
wie gesagt bin totaler anfänger und hab noch nie funktionen benutzt und offensichtlich läuft etwas mit der funktion hier falsch, da er nicht die eingegebenen werte benutzt
danke dann schonmal soweit hier das programm und bitte keine alternativprogramme die keine funktionen benutzen o.Ä. das programm soll im grunde so bleiben nur eben richtig funktionieren und ich denk mal das man auch nicht allzuviel ändern brauch
#include "stdio.h" #include "math.h" /* Funktion zur Berechnung des Kegelvolumens */ float kegelVolumen(float radius, float hoehe) { return (1/3)*(M_PI*radius*radius*hoehe); // Semikolon vergessen } int main() { float radius,hoehe,v1,v2; printf ("Bitte einen Radius eingeben.\n"); scanf ("%f",&radius); printf ("Bitte eine Hoehe eingeben.\n"); scanf ("%f",&hoehe); /* Aufruf der Funktion kegelVolumen */ v1 = kegelVolumen(2.7f, 3.1f); // Einfacher Syntaxfehler anstelle eines Kommatas muss ein Punkt geschrieben werden v2 = kegelVolumen(3.4f, 2.4f); /* Ausgabe der Ergebnisse */ printf("v1 = %f\n", v1 ); // hier gehört ein float hin printf("v2 = %f\n", v2 ); printf("v3 = %f\n", kegelVolumen(5.f, 2.5f)); getchar(); return 0; }
-
Warum sollte denn die Funktion nicht die eingegebenen Werte benutzen?
Lass dir doch einfach die übergebenen Werte in der Funktion kegelVolumen mit
printf anzeigen.
Das Problem dürfte sein, das der Ausdruck (1/3) zu Null wird,
weil das eine Integerdivision ist. Damit wird das gesamte Ergebnis zu 0.
-
was wär denn mit
return (1.0/3.0)*(M_PI*radius*radius*hoehe);
?
Damit wär doch das int Problem gelöst oder?Danke übrigens für die geschichte mit return 1.
Ich steh bei manchen Dingen ein bisl auf der Leitung.
-
Damit wär doch das int Problem gelöst oder?
Oder einfach mal hier nachlesen:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-253433.htmlOder auch hier:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-253501.html
-
Oder einfach mal hier nachlesen:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-253433.htmlOder auch hier:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-253501.htmlCheck jetz ned was Du damit meinst...
-
Big Brother schrieb:
Warum sollte denn die Funktion nicht die eingegebenen Werte benutzen?
Lass dir doch einfach die übergebenen Werte in der Funktion kegelVolumen mit
printf anzeigen.
Das Problem dürfte sein, das der Ausdruck (1/3) zu Null wird,
weil das eine Integerdivision ist. Damit wird das gesamte Ergebnis zu 0.das frag ich euch ja ^^ jedenfalls spuckt er immer nur gleiche werte aus und ich hab keine ahnung wo er die hernimmt
(1/3) war natürlcih mein fehler keine ahnung warum das da noch drin war mit (1.0/3) hat sich das natürlich erledigt
-
v1 = kegelVolumen(2.7f, 3.1f);
weil da immer feste Werte stehen oder?
ich fange auch grad am totalen Anfang an aber das macht doch das Gleiche oder ned?
#include <stdio.h> #include <math.h> int main() { float h = 0, r = 0, x = 0; printf ("Bitte Radius eingeben: \n"); do {scanf ("%f", &r);} while ( getchar() != '\n' ); printf ("Bitte Höhe eingeben: \n"); do {scanf ("%f", &h);} while ( getchar() != '\n' ); printf("Ergebnis: %f", ((1.0/3.0)*(r*r)*h)*M_PI); return 0; }
-
Versuche doch mal die Funktion wie folgt aufzurufen:
v1 = kegelVolumen(radius, hoehe);
Dann klappts auch. Dachte da kommst du selbst drauf
Gruß,
Andreas