Cześć Wszystkim :)
Potrzebuje pomocy w zadaniu na studia. Od dłuższego czasu próbuje je rozgryźć, ale za dużo na razie nie napisałem.
Za pomocą pól a,b oraz c obliczam delte i x1,x2 dla funkcji kwadratowej.
Następnie w pętli dodaje wyniki do tablicy, lecz nie jestem pewny czy robię to prawidłowe. Nie rozumiem tak w 100% jak dodawać wyniki do tablicy dwuwymiarowej.. Będę wdzięczny za przykład!
Kolejnym punktem jest narysowanie wykresu z danych pobranych do tablicy za pomocą PainBox.Canvas.
Zamieszczam cały amatorski kod jaki zrobiłem. Pewnie większość jest do poprawy, KAŻDA sensowna rada będzie dla mnie cenna - chce się tego na prawdę nauczyć dla siebie.
procedure TForm1.Button_rownanieClick(Sender: TObject);
var n : integer;
var x : longint ;
var y: longint;
var xi : double ;
var xmin : double ;
var delta : double;
var a : real;
var b: real ;
var yi : real;
var c: real;
var komunikat : string ;
var zero : string ;
var deltazero : string;
begin
try
a := Strtoint(Edit_a.text);
b := Strtoint(Edit_b.text);
c := Strtoint(Edit_c.text);
Except
komunikat :='Blad konwersji ciagu. Prosze podać cyfry!';
Application.MessageBox(Pchar(komunikat),'Blad',0 );
end;
if (a = 0) then
begin
zero := 'A nie może być rowne zero! Podaj inna liczbe!';
Application.MessageBox(Pchar(zero),'Blad',0 );
end
else
begin
delta := b*b - 4 * a *c;
end ;
if (delta > 0) then
begin
x1 := (-b - Sqrt(delta))/(2 * a);
x2 := (-b + Sqrt(delta))/(2 * a);
xmin := -b / (2 +a);
xi:= xmin;
for i:=1 to 500 do
begin
yi:=a*xi*xi+b*xi+c;
TabWar[1,1]:=xi;
TabWar[1,2]:=yi;
x := round(TabWar[1,1]);
y := round(TabWar[1,2]);
PaintBox_wykres.canvas.Pixels[x,y]:= clRed;
end;
;
ListBox_tablica.Items.Clear;
ListBox_tablica.Items.Add(FloatToStr(TabWar[1,1])+ ' '+FloatToStr(TabWar[1,2]));
Memo_wyniki.Lines.Clear;
Memo_wyniki.Append('x1 : '+ FloatToStr(x1) + ' x2 :' + FloatToStr(x2));
end;
if (delta = 0) then
begin
x3 := -b / (2+ a);
Memo_wyniki.Lines.Clear;
Memo_wyniki.Append('x : '+ FloatToStr(x3));
end;
if (delta < 0) then
begin
deltazero := 'Delta rowna zero - brak rozwiazan!';
Application.MessageBox(Pchar(deltazero),'Blad',0 );
end;
end;
Wklejam poniżej treść zadania, które muszę rozwiązać.
Wykres:
- Jak użyć funkcji Canvas by narysować wykres jak wyżej z danych dodanych wcześniej do tablicy?
- W sumie, jak prawidłowo dodać wyniki do tablicy?
Pozdrawiam Was wszystkich i proszę o rady :)