Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Brauche Program das Math. Formeln aus Variabeln macht(SIN) (https://www.delphipraxis.net/2183-brauche-program-das-math-formeln-aus-variabeln-macht-sin.html)

Bloodhound 11. Jan 2003 13:35


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

nailor 11. Jan 2003 16:07

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...

Bloodhound 11. Jan 2003 16:13

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!!

Bloodhound 11. Jan 2003 16:15

Die Programmberfläche ist auch kein Problem, einzig und allein bei der erstellung des Quelltextes habe ich Probleme!

nailor 11. Jan 2003 16:19

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.

nailor 11. Jan 2003 16:23

Code:
...a := strtofloat(edit1.text);
b := strtofloat(edit2.text);
fi := strtofloat(edit1.text);

result := a * sin(b * (x - fi));
...
x entweder in eine Schleife packen, oder auch eingeben lassen.

Bloodhound 14. Jan 2003 19:56

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.

nailor 14. Jan 2003 22:07

Also, pack in alle Proceduren erst mal ein
Delphi-Quellcode:
ErgebnisChange(Sender: self);
rein, damit die Anzeige immer neu geschrieben wird. (Im folgenden aus Faulheit nicht gemacht)

Delphi-Quellcode:
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.
Hoffe, das hilft


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf