![]() |
wo muss denn die function hin??
|
Hi,
kurze Zwischenfrage (das fragen wohl alle Programmierer) : Bis wann soll das fertig sein ? Gruß Hansa |
am besten wäre heute dann könnt ich es morgen abgeben :cry:
|
haha,
so ungefähr habe ich mir das gedacht. Selbst wenn Dir tatsächlich hier einer die Hausaufgaben macht, glaubst Du der Lehrer würde dich nicht fragen, wie Du das hingekriegt hast ? Was nützt Dir das überhaupt ? Selbst wenn das hier tatsächlich noch hinhaut, bist Du genau so weit wie vorher, die Defizite sind immer noch vorhanden! Für mich ist das pure Zeitverschwendung ! :spin: Um die minimale Chance zu nutzen und Dir den Mut nicht zu rauben hab ich das hier mal so hingeknallt :
Code:
Hier ist KEINE Fehlerprüfung vorhanden. KEINE Besonderheiten. Wirklich ABSOLUT NICHTS besonderes. Ich habe lediglich die Prozedur "Multipliziere" geschrieben und die Unit "Math" in die Uses Liste eingefügt (die ich hierfür aber nicht brauche), damit Du siehst, wo die hin muß :chat: . Auf der Form habe ich zudem 2 Edit-Felder 2 Labels und dann noch ein drittes fürs Ergebnis angeordnet. Die Caption, also die Beschriftung des 3. Labels zeigt das Ergebnis. Das wird angezeigt, sobald das zweite Edit verlassen wird (Edit2Exit). So ungefähr mußt Du das machen.
unit Unit1;
interface uses Math, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; procedure Edit2Exit(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} FUNCTION Multipliziere (a,b : real) : real; BEGIN Multipliziere := a * b; END; procedure TForm1.Edit2Exit(Sender: TObject); begin Label3.Caption := FloattoStr (Multipliziere (StrToFloat (Edit1.Text),StrToFloat (Edit2.Text))); end; end. Gruß Hansa |
Vielen dank, ich bin grad dabei deine eingaben nachzuvollziehen, wenn ich das anschau raff ich schon was für was ist und kanns anderen auch erklären.
Allerdings muss irgendwo ein End fehlen, stattdessen ist ein ungültiges zeichen#160 vorhanden :freak: |
Hi,
ausnahmsweise ist der Quelltext sogar getestet. :chat: Ist das chr (160) vielleicht nur bei Dir ? Gruß Hansa |
Hallo Bloodhound,
so wie Hansa es geschrieben hat, ist es absolut in Ordnung. Ich hatte oben die Funktion als Methode des Formulars beschrieben. Wenn du das ralisieren willst, wäre die Deklaration wie folgt:
Delphi-Quellcode:
Unterhalb des Tags implementation folgt dann irgendwo:
type
TForm1 = class(TForm) ... private { Private declarations } function SinWithScale(a, x, b, fi: extended; useRad: Boolean): extended; public { Public declarations } end;
Delphi-Quellcode:
Wie Hansa habe ich auch keine Fehlerbehandlung eingefügt, dazu solltest du einen try ... except Block verwenden.
function TForm1.SinWithScale(a, x, b, fi: extended; useRad: Boolean): extended;
var erg : extended; begin if Not useRad then begin { hier musst du die Werte x, b und fi in Rad umwandeln, da der Benutzer diese in Grad angegeben hat } end; erg := a*sin(b*(x-fi)); if Not useRad then { hier den erhalten Wert wieder in Grad umwandeln }; Result := erg; end; Wenn du die Kommentare (also das Umwandeln von Grad in Rad bzw umgekehrt noch erledigst, hast du schon die Funktion fertig. Such doch mal in der Hilfe unter RadToDeg :mrgreen: . Hansa ist vielleicht etwas scharf in Ton, aber er hat natürlich Recht, wenn er sagt, dass das Abschreiben allein nichts bringt. Für 15 Punkte in Mathe oder Informatik solltest du versuchen mehr allein zu schaffen. Wenn du eine gezielte Frage hast -auch wenn sie sehr einfach ist- wirst du auch weiterhin Hilfe erhalten. Wenn du die Funktion fertig hast, versuche mal eine Listbox zu füllen, in der du alle x-Werte von -Pi bis Pi, im Abstand von 0.1 und deren Funtionswert ausgibst. Wenn du das hast, kämen wir zur graphischen Anzeige. |
Hmm das mit den Gradangaben muss wohl ein missverständniss sein.
Die Parameter sind alle ganz normale zahlen, die umwandlung ist allso eigendlich überflüssig denke ich. Das Prog muss "nur" die Eingabe in Edit 1(a) die Eingabe in Edit 2(b)==> 2pi/b=c die Eingabe in Edit 3(fi) in die Formel f(x)=a*sin(c(x-fi) einsetzen. B sollte sowohl als Zahlenwert wie auch in pi angegeben werden können. Das lässt sich aber denke ich lösen wenn ich ein mit einer If verknüpfunge 2 Buttons einbinde der eine der b direkt in c umrechnet , den anderen bei dem b zuerst mit pi multipliziert wird und dann umgerechnet |
Hallo Bloodhound,
OK, wenn du keine Angaben in Grad brauchst, kannst du den letzten Parameter aus der Parameterliste streichen. Du könntest eventuell eine CheckBox neben das Eingabefeld stellen mit der Beschriftung "*Pi". Wenn diese markiert ist, multiplizierst du b mit pi, sonst übergibst du b direkt als Parameter an die Funktion. Bei der Eingabe über Edit-Felde erhälst du in der Eigenschaft Text den Eingabewert als String. Diesen musst du natürlich in einen Realzahl umwandeln, dazu kannst du die Funktion StrToFloat aus der SysUtils Bibliothek benutzen. Das Ganze solltest du in einen try ... except Block packen, da der User ja auch einen ungültigen Wert angeben kann. Anstatt eines einfachen Edt Feldes kannst du auch ein MaskEdit Feld benutzen, dann kannst du noch beseer kontrollieren, was der Benutzer eingeben darf. Jetzt müsste es mit der Listbox klappen, oder? |
Ich habe das Programm mal so geschrieben wie es sein sollte.
Mein problem ist jetzt das ich nicht die Befehle für die komentare weiß ansonsten ist denke ich alles soweit eichtig
Delphi-Quellcode:
[edit=Daniel B]Delphi-Tags; Bitte das nächste mal nicht [ code], sondern [ delphi] benutzen. Danke. Kommentar-Zeichen. MfG Daniel B.[/edit]
unit Unit1;
interface uses math, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, XPMan; type TForm1 = class(TForm) a: TEdit; b: TEdit; fi: TEdit; Ergebnis: TEdit; Berechnen: TButton; CheckBox1: TCheckBox; procedure aChange(Sender: TObject); procedure ErgebnisChange(Sender: TObject); procedure bChange(Sender: TObject); procedure fiChange(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure BerechnenClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.aChange(Sender: TObject); begin //Eingabe fließt als a in ergebnis ein end; procedure TForm1.bChange(Sender: TObject); begin //2*3,14159 geteilt durch Eingabe b fließt als B in Ergebnis ein end; procedure TForm1.CheckBox1Click(Sender: TObject); begin {wenn Checkbox markiert wird eingabe in b (b mal mit 3,14159 multipliziert)} end; procedure TForm1.fiChange(Sender: TObject); begin //Eingabe fließt als fi in Ergabnis ein end; procedure TForm1.BerechnenClick(Sender: TObject); begin //Bei klick des Buttons wird ergebnis angezeigt end; procedure TForm1.ErgebnisChange(Sender: TObject); begin (*Ergebnis grundform f(x)=Eingabe in feld a*sin(eingabe in feld b(x-eingabe in feld fi))*) {mit sin bzw. x muss nichts gerechnet werden es müssen nur die eingaben eingesetzt werden.} end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz