Autor |
Beitrag |
wayne123
      
Beiträge: 52
|
Verfasst: 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 Martok: Topic aus Sonstiges (Delphi) verschoben am So 16.01.2011 um 22:40
|
|
Xion
      

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)
|
Verfasst: So 16.01.11 23:20
_________________ 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 
      
Beiträge: 52
|
Verfasst: 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
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 16.01.11 23:32
Steht doch da... Die musst du auch in die uses schreiben... 
|
|
wayne123 
      
Beiträge: 52
|
Verfasst: 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
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: 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
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 52
|
Verfasst: So 16.01.11 23:52
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 public 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 Martok: Delphi-Tags gesetzt
|
|
wayne123 
      
Beiträge: 52
|
Verfasst: 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
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: 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:
Quelltext 1:
| <span class="inlineSyntax"><span class="codecomment">{PROTECTTAG107ac9c8fe676154cf7b2d002a022f5b}</span></span> |
Wird:
Delphi-Quelltext
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
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: Mo 17.01.11 04:38
Hallo, habe mir mal Deine Prozedur vorgenommen.
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.
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:
Delphi-Quelltext
Das wäre in Deinem Fall eine mögliche korrekte Zeile.
2.
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:
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
      
Beiträge: 617
Erhaltene Danke: 364
W7
Delphi 6 pro
|
Verfasst: Mo 17.01.11 18:06
Moin wayne123,
Dein Problem ist auch ohne die Unit Math lösbar:
Delphi-Quelltext
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 
      
Beiträge: 52
|
Verfasst: 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
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 Martok: Delphi-Tags gesetzt
|
|
|