Uberladung einer bestimmten Funktion
-
Hi,
ich wollte ein Programm für die Berechnung eines Exponentiellen Wachstums schreiben.
Bisher habe ich das kleine:#include <iostream> #include <conio.h> #include <cmath> using namespace std; void main() { double ausgang; double faktor; double time; double ende; const float e = 2.718281; cout << "Berechnung f\x81r exponentielles Wachstum. Gebe den Ausgangswert an (double): "; cin >> ausgang; cout << "Nun gebe den Faktor an: "; cin >> faktor; cout << "Gebe die Zeit an: "; cin >> time; double zwischen = faktor * time; ende = ausgang * pow(e,zwischen); cout << "Der Endwert lautet: " << ende; getch(); }Nun gibt mir der Compiler beim Kompilieren zurück:
1>------ Erstellen gestartet: Projekt: Epwt, Konfiguration: Debug Win32 ------ 1>Kompilieren... 1>index.cpp 1>c:\users\marcel\documents\visual studio 2008\projects\Epwt\index.cpp(12) : warning C4305: 'Initialisierung': Verkürzung von 'double' in 'const float' 1>c:\users\marcel\documents\visual studio 2008\projects\Epwt\index.cpp(20) : error C2666: 'pow': 6 Überladungen haben ähnliche Konvertierungen 1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(575): kann 'long double pow(long double,int)' sein 1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(573): oder "long double pow(long double,long double)" 1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(527): oder "float pow(float,int)" 1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(525): oder "float pow(float,float)" 1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(489): oder "double pow(double,int)" 1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(123): oder "double pow(double,double)" 1> bei Anpassung der Argumentliste '(const float, double)' 1>Das Buildprotokoll wurde unter "file://c:\Users\Marcel\Documents\Visual Studio 2008\Projects\Epwt\Debug\BuildLog.htm" gespeichert. 1>Epwt - 1 Fehler, 1 Warnung(en) ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========Was mach ich falsch?
Gruß
-
Das steht in der Fehlermeldung.

Du musst eine der gegebenen Überladungen einsetzen. Momentan rufst du
pow()mit den Argumenttypenfloatunddoubleauf, wofür aber keine Überladung existiert und Standardkonvertierungen mehrdeutig sind. Entscheide dich also fürpow(float, float)oderpow(double, double).Und falls du standardkonform programmieren möchtest, solltest du
int main()stattvoid main()einsetzen. Zu<conio.h>undgetch()gäbe es auch Alternativen in den FAQ...
-
Okay vielen Dank!
Ja cin.get() aber das währe ja nach der ersten Eingabe hinfällig.