![]() |
Brauche Program das Math. Formeln aus Variabeln macht(SIN)
Brauche zwecks Mathematiknotenaufbesserung ein Programm welches nach eingabe von Parametern (a-Amplitude,b-Periodenlänge,fi-Verschiebung der Nulstellen um fi) diese in Trigonometrische Funktionen umwandelt.
Das Ganze soll so vonstatten gehen das man Beispielsweise angibt a=1,5 b=2 und fi=1 angib und das Prog dann f(x)=1,5 sin(2(x-1)) ausgibt. Wäre noch gut wenn das Programm einen Graphen zeichen könnte, die umwandlung von sin in cos bewältigen könnte, B soll dabei als Zahl oder als Pi Wert angegeben werden könnte und vieleicht noch ein Schmankerln enthalten würde. Das Programm muss wirklich gut sein( sollte 15 Punkte bringen dann würde ich den Mathematikkurs nicht unterbelegen :party:) Da meine Programmierkentnisse für sowas nicht ausreichend sind hoffe ich mal das mir jemand Helfen kann und so meine Mathenote rettet. PS: Das Programm muss nicht unbedingt in Delphi geschrieben sein, C++ oder ähnliches geht auch aber ich schätze das Delphi doch am besten geeignet ist. MFG Ein Verzweifelter Schüler |
Frag doch mal deinen Mathelehrer, ob ihr nicht ne Schul-Lizenz von Derive habt. Das dürfen Schüler dann auch daheim am PC nutzen...
|
Es geht nicht um Derive, dort sind mir die Funktionen klar. Der Lehrer möchte ein Gesondertes Programm da er eines erstellt hat und sehen möchte wie man das Problem auf andere Weise gelöst werden kann (Er hat Exel benutzt). Und da ich ein Referat zu diesem Thema halten sollte meinete er ich solle dieses Programm als Referat benutzen!!
|
Die Programmberfläche ist auch kein Problem, einzig und allein bei der erstellung des Quelltextes habe ich Probleme!
|
Dann lass doch ganz simpel a, b und fi über irgendwelche Objekte (edit, trackbar, spinedit...) eingeben, binde die unit Math ein und verwende die Funktion sin. Achtung: ist in RAD, nicht DEG anzugeben, also vorher umrechnen, wenn nötig.
|
Code:
x entweder in eine Schleife packen, oder auch eingeben lassen.
...a := strtofloat(edit1.text);
b := strtofloat(edit2.text); fi := strtofloat(edit1.text); result := a * sin(b * (x - fi)); ... |
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
Code:
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. |
Also, pack in alle Proceduren erst mal ein
Delphi-Quellcode:
rein, damit die Anzeige immer neu geschrieben wird. (Im folgenden aus Faulheit nicht gemacht)
ErgebnisChange(Sender: self);
Delphi-Quellcode:
Hoffe, das hilft
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; a,b,fi: string; implementation {$R *.dfm} procedure TForm1.aChange(Sender: TObject); begin a := DeinEdit.Text; end; procedure TForm1.bChange(Sender: TObject); begin b := floattostr(2 * 3.14159 {kein Komma, Punkt} / DeinEdit.Text) end; procedure TForm1.CheckBox1Click(Sender: TObject); begin wenn Checkbox markiert wird eingabe in b (b mal mit 3,14159 multipliziert) // das pack in die ErgebnisChange end; procedure TForm1.fiChange(Sender: TObject); begin fi := DeinLabel.Text; end; procedure TForm1.BerechnenClick(Sender: TObject); begin Bei klick des Buttons wird ergebnis angezeigt //hab ich übersehen, dann kannst du das ErgebnisChange in den einzelnen Proceduren weglassen end; procedure TForm1.ErgebnisChange(Sender: TObject); var btemp: string; begin if checkbox1.checked then btemp := b; else btemp := floattostr(3,14159 * strtofloat(b)); //es gibt auch ein pi in der unit Math DeinLabel.Caption := 'f(x) =' a + '*sin(btemp(x-' + fi + '))'; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:55 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-2025 by Thomas Breitkreuz