Autor Beitrag
wayne123
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: So 16.01.11 23:14 
Ich hab ein Problem. Ich weiß nicht wie ich die Potez in Delphi machen soll, sodass die Hochzahl eine Variabel ist. Weiß hier vllt jemand, wie man das möglichst unkompliziertt machen kann?


Moderiert von user profile iconMartok: Topic aus Sonstiges (Delphi) verschoben am So 16.01.2011 um 22:40
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: So 16.01.11 23:20 
www.epinasoft.com/de...rence_libsurvey.html hat folgendes geschrieben:

Power math function Power(const Base, Exponent: Extended): Extended;
Berechnet die Potenz zu einer beliebigen Basis.

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
wayne123 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: So 16.01.11 23:30 
Und wie würde das bei einem Beispiel aussehen? Bei mir kommt nämlich immer: Undefinierter Bezeichner Power.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 16.01.11 23:32 
Steht doch da...
Zitat:
Unit
math
Die musst du auch in die uses schreiben... :roll:
wayne123 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: So 16.01.11 23:42 
Verdammt, vergessen ^^. Aber Power kann ich ja nicht in Verbindung mit einer For-Schleife benutzen, oder, wegen Integer und Extended? Wie könnte ich das dann machen, dass der die Werte für ganz viele unterschiedliche z(Hochzahl) Werte ausrechnet?
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: So 16.01.11 23:47 
Ehm... wie bitte? Was willst du?

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 16.01.11 23:49 
Du kannst auch eine ganze Zahl (Integer) als Kommazahl (Extended) übergeben. Das ist eigentlich kein Problem. Nur das Ergebnis ist natürlich wieder Extended und nicht Integer.

Wenn du dazu schreiben würdest was du versucht hast (hast du ja hoffentlich...), könnten wir dir auch sagen was da falsch ist.
wayne123 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: So 16.01.11 23:52 
ausblenden volle Höhe Delphi-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:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Math;

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

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var x,y,z: extended;
begin
x:= StrToFloat(Edit1.Text);
y:= StrToFloat(Edit2.Text);
Edit3.Text:= FloatToStr((2*x*y)/(x+y));
for z:= 1 to 25 do
begin
Power(w,z):=extended;
end;
Edit4.Text:= FloatToStr(223*Power)
end;

end.


Moderiert von user profile iconMartok: Delphi-Tags gesetzt
wayne123 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: Mo 17.01.11 00:10 
Okay, ich seh schon, dass ich da nur Mist gemacht habe, war wohl zu müde, weil ich in den etzten paar Tage immer sehr spät im Bett war. Ich guck mir das morgen nochmal an und falls ich wieder Probleme mit Integer und Extended bei der for-Schleife habe, melde ich mich hier nochmal, da ich ja weiß, dass mir hier ständig meine groben Fehler beim Programmieren aufgezeigt werden.
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Mo 17.01.11 00:24 
Hallo!

Bitte verwende für Quellcode die entsprechenden [delphi]-Tags, dann wird er "schöner" dargestellt als im Fließtext. Beispiel:
ausblenden Quelltext
1:
<span class="inlineSyntax"><span class="codecomment">{PROTECTTAG107ac9c8fe676154cf7b2d002a022f5b}</span></span>					

Wird:
ausblenden Delphi-Quelltext
1:
var Test: integer;					


Oben Rechts neben deinem Beitrag findest du dazu die "Bearbeiten"-Funktion, dort einfach ändern und speichern. Danke!

Viele Grüße,
Martok

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Tranx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: Mo 17.01.11 04:38 
Hallo, habe mir mal Deine Prozedur vorgenommen.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.Button1Click(Sender: TObject);
var x,y,z: extended;
begin
  x:= StrToFloat(Edit1.Text);
  y:= StrToFloat(Edit2.Text);
  Edit3.Text:= FloatToStr((2*x*y)/(x+y));
  for z:= 1 to 25 do 
  begin
    Power(w,z):=extended;
  end;
  Edit4.Text:= FloatToStr(223*Power)
end;


Also zwei Zeilen ergeben für mich gar keinen Sinn.

1.
ausblenden Delphi-Quelltext
1:
  Power(w, z) := extended;					


Extended ist keine Variable, sondern ein Variablentyp, somit hat dies keinen Wert. Und auf der rechten Seite der Zuweisung müssen nun mal Werte stehen. Es muss ja etwas zugewiesen werden.
Dann ist das nächste: Power ist eine Funktion, ihr kann also nichts zugewiesen werden. Power kann nur auf der rechten Seite stehen, denn sie liefert als Funktion einen Wert:

ausblenden Delphi-Quelltext
1:
  y := Power(w,z);					


Das wäre in Deinem Fall eine mögliche korrekte Zeile.

2.
ausblenden Delphi-Quelltext
1:
  Edit4.Text := FloatToStr(223*Power)					


Hier wird zwar Power auf der richtigen Seite, jedoch ohne Parameter benutzt. Entweder ist in diesem Fall Power eine Variable, was dann jedoch zur Konfusion führt, wenn man Variablen (Die jedoch in dem Cosde nicht definiert ist) und Funktionen gleich benennt, oder es ist eben doch die Funktion, und dann benötigt Power zwei Parameter, nämlich Basis und Exponent. Nebenbei: Bei der letzten Zeile vor "end;" kann man das abschließende Komma weglassen. Ich schließe jedoch alle Zeilen, welche ein Komma erlauben, mit diesem ab. Denn wenn ich den Text erweitere, vergesse ich nicht, das Komma in der Zeile hinzuzufügen. In jedem Fall merkt der Compiler den Fehler, falls er auftritt.

Allerdings verstehe ich nicht, was die Schleife soll. Du berechnest irgendwelche Werte und gibst letztendlich einen Wert aus. Wofür dann die Schleife? Da ist nicht mal eine Summenbildung des Typs:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
  Summe := 0.0;
  for z := 1 to 25 do
  begin
    Summe := Summe + Power(w,z);
  end;
  Edit4.Text:= FloatToStr(Summe);


oder ähnliche Konstrukte. Klär uns hierin doch mal auf! ;)

_________________
Toleranz ist eine Grundvoraussetzung für das Leben.
Fiete
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 617
Erhaltene Danke: 364

W7
Delphi 6 pro
BeitragVerfasst: Mo 17.01.11 18:06 
Moin wayne123,
Dein Problem ist auch ohne die Unit Math lösbar:
ausblenden Delphi-Quelltext
1:
x:=exp(3*ln(2));					

entspricht x=2^3
wobei x vom Typ extended sein muß.
exp ist die e-Funktion, ln der Logarithmus zur Basis e
Gruß
Fiete

_________________
Fietes Gesetz: use your brain (THINK)
wayne123 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: Mo 17.01.11 20:32 
Ja, ich hab gemerkt, dass ich da völligen Quatsch gemacht habe. Habs jetzt auch einfacher gelöst, musste deswegen nur mehr schreiben. Ich hätte noch die Werte vergleichen lassen müssen für mein Programm, damit am Ende der Wert rauskommt, der am nahesten an dem Wert ist, der eingegeben wird, aber das geht ja durch if-then. Wäre doch:
X=Eingabewert y=jeweiliger Wert, der rauskommt z= Variabel für Rechnung mit Ergebnis y

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
KlErgebnis:= 99999
for z:= 1 to 25 do
begin
Rechnung
if y<=x then
begin
Differenz:= x-y
if Differenz<KlErgebnis then
begin
KlErgebnis:=Differenz
end;
else 
Differenz:= y-x
if Differenz<KlErgebnis then
begin
KlErgebnis:=Differenz
end;


Moderiert von user profile iconMartok: Delphi-Tags gesetzt