Funktionsaufruf
-
Hallo,
bin Anfänger und wollte ein Programm schreiben, welches mir die Oberfläche eines Zylinders ausgibt. Hier der Code#include <iostream>
#include <conio.h>using namespace std;
int main (void)
{
float c =2;
float d=3;float oberflaeche (c,d);
getch();
return 0;
}float oberflaeche (float r, float h)
{
float a;
a=2*3.14*r*h;
cout << a;
}Der Debugger sagt mir dann:,,Zu viele Initialisierungen'' (bezieht sich auf float oberflaeche (c,d) )
Ich verstehe allerdings nicht, wo der Fehler ist!
-
float oberflaeche (c,d);ist kein Funktionaufruf, sondern die Deklaration einer Funktion. Nochmal Grundlagen zu Funktionen und wie man sie aufruft studieren. Und dein Lehrwerk hat übrigens einen merkwürdigen Stil mitint main(void)undreturn 0aus der main (eher typisch für C) und einem total unnötigen und unportablemconio.h. Woher ist das?
-
Hallo,
Lies bitte mal was über Funktionen bei C++.
z.Bsp. das hier
http://www.cpp-tutor.de/cpp/le07/funktion.html
-
Und die Funktion
oberflaechegibt keinen Wert (mit return) zurück. Das musst du auch noch ergänzen, alsofloat oberflaeche (float r, float h) { float a; a=2*3.14*r*h; return a; }oder verkürzt:
float oberflaeche (float r, float h) { return 2*3.14*r*h; }
-
SeppJ schrieb:
float oberflaeche (c,d);ist kein Funktionaufruf, sondern die Deklaration einer Funktion. Nochmal Grundlagen zu Funktionen und wie man sie aufruft studieren. Und dein Lehrwerk hat übrigens einen merkwürdigen Stil mitint main(void)undreturn 0aus der main (eher typisch für C) und einem total unnötigen und unportablemconio.h. Woher ist das?Das würde doch eher eine Variable oberflaeche vom Typ float deklarieren, die 2 Konstruktorparameter bekommt?! So sieht das der Compiler anscheinend auch.
-
Zusammengefasst: Du willst
#include <iostream> using namespace std; float oberflaeche(float r, float h) { return 2 * 3.14f * r * h; } int main() { cout << oberflaeche(2.f, 3.f) << endl; cin.get(); }
-
Ich hätte mal noch ne Off-Topic-Frage. Gibt es eigentlich eine Regel die besagt, für welche Berechnungen man eher double und für welche man eher float benutzen sollte? Oder sollte man einfach, wenn man die Genauigkeit nicht benötigt, float benutzen? Andererseits spart man sich mit double die Promotion...
-
Welchen Vorteil hätte denn float?
(Die beiden Antworten die du nun wahrscheinlich gibst, gelten praktisch nur auf Grafikkarten und bei Netzwerkkommunikation. Und das sind auch die Zwecke wo man float nutzen muss (Grafikkarten) oder sich zumindest mal Gedanken darüber machen sollte (Kommunikation))
-
Danke für die Hilfe!
Habs jetzt geändert:#include <iostream>
#include <conio.h>using namespace std;
float oberflaeche (float r, float h);
int main (void)
{
float c =2;
float d=3;
float e;e= oberflaeche (c,d);
cout << e;getch();
return 0;
}float oberflaeche (float r, float h)
{
float a;
a=2*3.14*r*h;
return a;
}Funktioniert sogar

Und nochwas an SeppJ: Ich kenn das mit dem ,,int main (void)'' nur so. Weiß war, dass man da das void in der Klammer auch weglassen kann, aber ich machs trotzdem immer rein. Und den Header conio.h und getch ist nur dazu damit das dos fenster nach dem Debugging nicht direkt verschwindet
-
Besser wäre es, wenn du
system("PAUSE")verwendest.