Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Potenzfunktion Power bzw IntPower


malibu85 - Do 13.12.07 16:42
Titel: Potenzfunktion Power bzw IntPower
Hallo, ich habe ein Problem mit der Potenzfunktion Power bzw. IntPower die syntax ist mir dank der Borland Hilfe bekannt aber leider habe ich das noch nicht so ganz begriffen. Ich möchte ein Zinsrechner darstelen, der die dyamsche Verzinsung berechnet ( Kapitalwert*(1+Znssatz)^n) Ich habe erstmal versucht, die Funkton auszugeben ohne die vollständige berechnung durchzuführen.
Ich bekomme folgende fehlermeldung wenn ich die Funktion ausführen will:
[Pascal Fehler] Unit1.pas(50): E2035 Nicht genügend wirkliche Parameter

Habe ich an der unktion Power etwas falsch verstanden? Seht sie euch bitte einmal an!


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
var
  Form1: TForm1;
  Kap, Zins, Jahre, KapNeu :real;

implementation

function Power(const Base: real; const Exponent: real): real;
begin
Zins:=(1+Zins);
Zins:=Base;
Jahre:=Exponent;

end;

{$R *.nfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:=FloatToStr(Kap);
Edit2.Text:=FloatToStr(Jahre);
Edit3.Text:=FloatToStr(Zins);

label1.Caption:=StrToFloat(Power);


end;


volvox - Do 13.12.07 16:51

Ähm irgendwie ist das komisch. Also erstmal ganz wichtig, dass du oben bei uses "maths" ergänzt.

Und Power ist halt schon ne fertige Funktion. Genauso wie du z.B. schreibst


Delphi-Quelltext
1:
StrToIn('1');                    


schreibst du bei power


Delphi-Quelltext
1:
Power(basis,exponent);                    


also z.B. die Funktion power(3,2) liefert den Wert 9



wichtig ist, dass die Basis integer, und der Exponent extended (Kommazahl) ist

---

Korrektur: Wenn beides extended ist, klappt es aber auch


malibu85 - Do 13.12.07 17:22

ach so ist das zu verstehen ich dachte, das es so wie in c ist, dass man eine Variable zur verfügung stellt und mit dieser dann arbeiten kann stellvertretend für einen Wert der im Programm auftauch. Danke für deinen Hinweis.


volvox - Do 13.12.07 17:29

Wenn das Problem gelöst ist, markier es bitte auch so


malibu85 - Do 13.12.07 17:54

Hier nochmal die Lösung zum Problem

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Borland.Vcl.StdCtrls, System.ComponentModel,math;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Kapital,Jahre,Zins,Klammerausdruck, KapitalwertNeu :real;
implementation

{$R *.nfm}

procedure TForm1.Button1Click(Sender: TObject);
begin

// einlesen der Werte für die Formel Kapitalwer*(1+Zins)^n//
Kapital:=StrToFloat(edit1.Text);
Zins:=StrToFloat(Edit2.Text);
Jahre:=StrToFloat(Edit3.Text);

// aus Zins den Ausdruck (1+Zins) machen//

Zins:=(1+Zins);

//neues Kapital nach n -Jahren Berechenen//

Klammerausdruck:=power(Zins,Jahre);
KapitalwertNeu:= Kapital*Klammerausdruck;

//Ausgabe des Ergebnis auf Label1//

Label1.Caption:=FloatToStr(KapitalwertNeu);


end;

end.