Hallo mal wieder! Ich brauche mal Hilfe bei der Programmierung eines Plotters und der Funktion Sin(x).
Ist eine Schulaufgabe... Die Umsetzung mit Delphi bereit mir nicht die Probleme ... Eher die Theorie dahinter... Und ich habe nichts wirklich brauchbares gefunden in Foren und im Internet ... Vielleicht kann mir hier ja jemand helfen... Und unser Lehrer erklärt leider auch kaum was... Deswegen wende ich mich an euch.
Delphi-Quellcode:
var Anzahl_n : Integer;
i, j, k, l, m : Integer;
Schritt : Double;
Y_Max_Wert : Extended;
X_Max_Wert : Extended;
Y_Min_Wert : Extended;
X_Min_Wert : Extended;
Y_Max_Min : Extended;
X_Max_Min : Extended;
Y_Temp_Max : Extended;
X_Temp_Max : Extended;
Y_Temp_Min : Extended;
X_Temp_Min : Extended;
Y_Null_Punkt : Extended;
X_Null_Punkt : Extended;
begin
Y_Max_Wert := 0;
Y_Min_Wert := 0;
X_Max_Wert := 0;
X_Min_Wert := 0;
Anzahl_n := StrToInt((edtAnzahln.Text));
Schritt := StrToFloat(edtSchritt.Text);
{ Schritt 1 : Wertetabelle erstellen für die Berechnung
X aus den Schritten und Y wird aus Sin(x) errechntet }
for i:= 0 to Anzahl_n do
begin
X_Werte_Array[i+1] := X_Werte_Array[i] + Schritt;
Y_Werte_Array[i+1] := Sin(X_Werte_Array[i]);
memAusgabe.Lines.Add('');
memAusgabe.Lines.Add('Wert von X : ' + FloatToStr(X_Werte_Array[i]));
memAusgabe.Lines.Add('Sin von X : ' + FloatToStr(Y_Werte_Array[i]));
memAusgabe.Lines.Add('');
end;
// Schritt 2 : Min und Max von Y bestimmen
// Max Y
for k:= 0 to Anzahl_n do
begin
Y_Temp_Max := Y_Werte_Array[k];
if (Y_Temp_Max > Y_Max_Wert)
then Y_Max_Wert := Y_Temp_Max;
end;
// Min Y
for j := 0 to Anzahl_n do
begin
Y_Temp_Min := Y_Werte_Array[j];
if (Y_Temp_Min < Y_Min_Wert)
then Y_Min_Wert := Y_Temp_Min;
end;
// Max X
for l := 0 to Anzahl_n do
begin
X_Temp_Max := X_Werte_Array[l];
if (X_Temp_Max > X_Max_Wert)
then X_Max_Wert := X_Temp_Max;
end;
// Min X
for m := 0 to Anzahl_n do
begin
X_Temp_Min := X_Werte_Array[m];
if (X_Temp_Min < X_Min_Wert)
then X_Min_Wert := X_Temp_Min;
end;
memAusgabe.Lines.Add('');
memAusgabe.Lines.Add('************************************************');
memAusgabe.Lines.Add('************************************************');
memAusgabe.Lines.Add('Y Max-Wert : ' + FloatToStr(Y_Max_Wert));
memAusgabe.Lines.Add('************************************************');
memAusgabe.Lines.Add('************************************************');
memAusgabe.Lines.Add('Y Min-Wert : ' + FloatToStr(Y_Min_Wert));
memAusgabe.Lines.Add('************************************************');
memAusgabe.Lines.Add('************************************************');
memAusgabe.Lines.Add('X Min-Wert : ' + FloatToStr(X_Min_Wert));
memAusgabe.Lines.Add('************************************************');
memAusgabe.Lines.Add('************************************************');
memAusgabe.Lines.Add('X Max-Wert : ' + FloatToStr(X_Max_Wert));
memAusgabe.Lines.Add('************************************************');
memAusgabe.Lines.Add('************************************************');
// Schritt 3 : Nullpunktverschiebung durch Subtraktion des Min - Wertes
Y_Null_Punkt := Y_Min_Wert - Y_Min_Wert;
X_Null_Punkt := X_Min_Wert - X_Min_Wert;
memAusgabe.Lines.Add('');
memAusgabe.Lines.Add('Y - Nullpunkt nach Verschiebung: ' + FloatToStr(Y_Null_Punkt));
memAusgabe.Lines.Add('');
memAusgabe.Lines.Add('X - Nullpunkt nach Verschiebung: ' + FloatToStr(X_Null_Punkt));
memAusgabe.Lines.Add('');
memAusgabe.Lines.Add('************************************************');
memAusgabe.Lines.Add('************************************************');
// Schritt 4 : Max - Min berechnen
X_Max_Min := X_Max_Wert - X_Min_Wert;
Y_Max_Min := Y_Max_Wert - Y_Min_Wert;
memAusgabe.Lines.Add('');
memAusgabe.Lines.Add('X Max/Min Wert: ' + FloatToStr(X_Max_Min));
memAusgabe.Lines.Add('');
memAusgabe.Lines.Add('Y Max/Min Wert: ' + FloatToStr(Y_Max_Min));
memAusgabe.Lines.Add('');
memAusgabe.Lines.Add('************************************************');
memAusgabe.Lines.Add('************************************************');
// Schritt 5 : h (bzw. b) (Max - Min) errechnen
System_Breite := imSystem.Width;
System_Hoehe := imSystem.Height;
// Schritt 6 : h - Y Wert
// Schritt 7 : Runden
end;
1.) Ist dieser Ansatz korrekt?
2.) Die Stichpunkte helfen mir nicht von meinem Lehrer. Kann jemand mal erklären wie ich theoretisch weitermachen muss...
Die Theorie dahinter zu verstehen wäre mir wichtiger als der Rest... Mathe ist zumdem schon ein Weilchen her und deshalb
beherrsche ich das alles auch nicht wirklich gut...
Ich hoffe jemand kann mir weiterhelfen.... Danke im voraus für die Mühe und den Aufwand.