AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Brauche Program das Math. Formeln aus Variabeln macht(SIN)
Thema durchsuchen
Ansicht
Themen-Optionen

Brauche Program das Math. Formeln aus Variabeln macht(SIN)

Ein Thema von Bloodhound · begonnen am 11. Jan 2003 · letzter Beitrag vom 14. Jan 2003
Antwort Antwort
Bloodhound

Registriert seit: 11. Jan 2003
38 Beiträge
 
#1

Brauche Program das Math. Formeln aus Variabeln macht(SIN)

  Alt 11. Jan 2003, 14:35
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 )
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
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#2
  Alt 11. Jan 2003, 17: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...
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Bloodhound

Registriert seit: 11. Jan 2003
38 Beiträge
 
#3
  Alt 11. Jan 2003, 17: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!!
  Mit Zitat antworten Zitat
Bloodhound

Registriert seit: 11. Jan 2003
38 Beiträge
 
#4
  Alt 11. Jan 2003, 17:15
Die Programmberfläche ist auch kein Problem, einzig und allein bei der erstellung des Quelltextes habe ich Probleme!
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#5
  Alt 11. Jan 2003, 17: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.
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#6
  Alt 11. Jan 2003, 17: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.
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Bloodhound

Registriert seit: 11. Jan 2003
38 Beiträge
 
#7
  Alt 14. Jan 2003, 20: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.
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#8
  Alt 14. Jan 2003, 23:07
Also, pack in alle Proceduren erst mal ein
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
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz