pow-Funktion; Hilfe notwendig!

Schnelle objektorientierte, kompilierende Programmiersprache.
TomGom
Beiträge: 3
Registriert: Mo Sep 29, 2008 8:23 pm

pow-Funktion; Hilfe notwendig!

Beitrag von TomGom » Mo Sep 29, 2008 8:35 pm

Hi,
ich hab folgendes Programmierbeispiel:

Code: Alles auswählen

#include <stdio.h>

double pow();

int main()
{
double x = 2.5, y;

y= pow(x, 3.0);
printf ("2.5 hoch 3 ergibt:   %f\n, y);

printf ("2 + (3 hoch 2.5) ergibt:  %f\n", 2 + pow(3.0, x));

return 0;
}
Ich hab erst angefangen C zu lernen. Das Beispiel ist für mich auch sinnvoll und nachvollziehbar, jedoch zeigt mir der Compiler folgendes an:
"error C2660: 'pow' : Funktion akzeptiert keine 2 Parameter"

Sind für die Funktion "pow" nicht 2 Parameter notwendig??
Oder kann mir jemand sagen, wo hier der Fehler liegt?

Bin über jede Hilfe glücklich, da es schon ziemlich deprimierend ist, gleich anfangs nicht weiter vorranzukommen.

MfG

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: pow-Funktion; Hilfe notwendig!

Beitrag von Kerli » Mo Sep 29, 2008 8:44 pm

TomGom hat geschrieben:"error C2660: 'pow' : Funktion akzeptiert keine 2 Parameter"
Das ist natürlich völlig klar. Du verwendest nämlich nicht die 'echte' pow-Funktion sondern deklarierst eine eigene:
TomGom hat geschrieben:double pow();
Mit diesem Codausschnitt deklarierst du eine Funktion mit dem Namen 'pow', die keine Parameter erwartete, und deshalb auch den Fehler erzeugt.

Damit du die richtige Funktion aus der Standardbibliothek benutzen kannst, musst du 'math.h' in dein Programm einbinden und am Besten löscht du auch gleich die von dir deklarierte Funktion 'double pow()'.

Übrigens: Willkommen im Forum ;)
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: pow-Funktion; Hilfe notwendig!

Beitrag von Dirty Oerti » Mo Sep 29, 2008 8:46 pm

http://www.elook.org/programming/c/pow.html hat geschrieben:Syntax:

Code: Alles auswählen

#include <math.h>
double pow( double base, double exp );

Description:
The pow() function returns base raised to the exp power. There's a domain error if base is zero and exp is less than or equal to zero. There's also a domain error if base is negative and exp is not an integer. There's a range error if there's an overflow.
exp muss laut dieser Referenz ein Integer sein, bei dir ist es ein Float.
Außerdem muss "math.h" eingebunden werden.
Sonst funtionierts auf keinen Fall. :)


*Da war wohl jemand schnell^^*

*EDIT*
Irgendwie...
pow muss ein Integer sein, wird aber als double definiert?
Versteh ich was falsch?
Oder widerspricht sich diese Referenz?

Naja, aber ich denke das Problem dürfte nach Kerli's Post lösbar sein :)
*/EDIT*
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

TomGom
Beiträge: 3
Registriert: Mo Sep 29, 2008 8:23 pm

Re: pow-Funktion; Hilfe notwendig!

Beitrag von TomGom » Mo Sep 29, 2008 9:02 pm

ok, danke :)
wenn ich "math.h" mit einbinde funzt alles wunderbar.
Ein bisschen ärgerlich is das zwar schon, dass das in dem Buch was ich mir gekauft habe,
insofern falsch drin steht, :( aber wozu gibt es foren?!^^

Und wenn ich "math.h" nicht einbinden würde, und somit selber eine Funktion deklariere...
wie genau würde das aussehen, wenn ich genau diesselbe Funktion bezeichnen will( also e^x)???

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: pow-Funktion; Hilfe notwendig!

Beitrag von Dirty Oerti » Mo Sep 29, 2008 9:13 pm

TomGom hat geschrieben:Und wenn ich "math.h" nicht einbinden würde, und somit selber eine Funktion deklariere...
wie genau würde das aussehen, wenn ich genau diesselbe Funktion bezeichnen will( also e^x)???
Du meinst du willst die Funktion selbst schreiben?

Code: Alles auswählen

long experimental_pow(int base, short exponent)
{
   long ret = base;
   for(;exponent>1;exponent--) {
      ret *= base;
   }
   return ret; //EDIT: Fast vergessen..
}
So dürfte das in etwa funktionieren :)
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

TomGom
Beiträge: 3
Registriert: Mo Sep 29, 2008 8:23 pm

Re: pow-Funktion; Hilfe notwendig!

Beitrag von TomGom » Mo Sep 29, 2008 9:33 pm

ok soweit bin ich dann doch noch nich...habs mir irgendwie einfacher vorgestellt.^^
Aber danke auf jeden Fall nochmal für die nette und schnelle Hilfe. :)

Ich hoffe, dass sich viele meiner Probleme in Zukunft von alleine lösen werden.
Ansonsten weiß ich ja, wo man gute Antworten bekommt (*schleim,schleim*) :D

MfG

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: pow-Funktion; Hilfe notwendig!

Beitrag von Dirty Oerti » Mo Sep 29, 2008 9:39 pm

TomGom hat geschrieben:ok soweit bin ich dann doch noch nich...habs mir irgendwie einfacher vorgestellt.^^
Aber danke auf jeden Fall nochmal für die nette und schnelle Hilfe. :)

Ich hoffe, dass sich viele meiner Probleme in Zukunft von alleine lösen werden.
Ansonsten weiß ich ja, wo man gute Antworten bekommt (*schleim,schleim*) :D

MfG
Keine Angst, so schwer ist das nicht. :)

Code: Alles auswählen

long experimental_pow(int base, short exponent)
{
   long ret = base;
   for(;exponent>1;exponent--) {
      ret *= base;
   }
   return ret; //EDIT: Fast vergessen..
}
Du übergibst der Funktion die Parameter, sagen wir mal 4 und 3.
ret ist der Rückgabewert.
Den setzen wir mal auf 4, damit haben wir 4 hoch 1 schonmal geschafft.
(Daher auch die 1 in der for-Schleife)
Jetzt zur Schleife:

Wir prüfen: exp > 1 ?
3 > 1 => ja
also multiplizieren wir die basis nochmal zum Rückgabewert:
ret *= base;
4 *= 4;
=> 4*4 = 16
dann wird exponent (durch die for-Schleife) um 1 verringert.
und von vorne:
2 > 1 => ja
=>=>
ret *= base;
16 *= 4;
=> 16 * 4 = 64;
exponent um eins niedriger => 1
1 > 1 => nein
wir verlassen die Schleife und geben per

return ret

das Ergebnis zurück.

Die Funktion oben kann natürlich noch schöner und besser realisiert werden, aber als einfaches Beispiel taugts :)
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: pow-Funktion; Hilfe notwendig!

Beitrag von Kerli » Mo Sep 29, 2008 9:42 pm

TomGom hat geschrieben:ok soweit bin ich dann doch noch nich...habs mir irgendwie einfacher vorgestellt.^^
Aber danke auf jeden Fall nochmal für die nette und schnelle Hilfe. :)
Bitte, dafür sind wir ja da ;)
TomGom hat geschrieben: Ich hoffe, dass sich viele meiner Probleme in Zukunft von alleine lösen werden.
Ansonsten weiß ich ja, wo man gute Antworten bekommt (*schleim,schleim*) :D
Sonst sind wir auch dabei ein Tutorial zu erstellen. Dort kannst du auch einiges lernen.

Und sollte etwas unverständlich sein, oder irgendetwas wichtiges nicht erklärt werden dann sag uns das bitte :D
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8861
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: pow-Funktion; Hilfe notwendig!

Beitrag von Xin » Mo Sep 29, 2008 10:04 pm

Dirty Oerti hat geschrieben:Du übergibst der Funktion die Parameter, sagen wir mal 4 und 3.
ret ist der Rückgabewert.
Den setzen wir mal auf 4, damit haben wir 4 hoch 1 schonmal geschafft.
(Daher auch die 1 in der for-Schleife)
Was, wenn ^1 schon zuviel ist?
4^0 ist nicht 4... ;-)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: pow-Funktion; Hilfe notwendig!

Beitrag von Dirty Oerti » Di Sep 30, 2008 2:55 pm

Xin hat geschrieben:
Dirty Oerti hat geschrieben:Du übergibst der Funktion die Parameter, sagen wir mal 4 und 3.
ret ist der Rückgabewert.
Den setzen wir mal auf 4, damit haben wir 4 hoch 1 schonmal geschafft.
(Daher auch die 1 in der for-Schleife)
Was, wenn ^1 schon zuviel ist?
4^0 ist nicht 4... ;-)
Dirty Oerti hat geschrieben:Die Funktion oben kann natürlich noch schöner und besser realisiert werden, aber als einfaches Beispiel taugts :)
Ich weiß ich weiß.
Es ist nur ein Beispiel.
Schnell aus dem Ärmel geschüttelt.
Ich wollte jetzt keine allgemein gültige Funktion schreiben...
Wie funktioniert 5 hoch -3,563?
Das könnte ich mathematisch nicht mal genau ausrechnen, nur nähern.
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Antworten