Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- procedure TF_MGaussa.Button1Click(Sender: TObject);
- var
- I,II,III,Id, VS, US: Integer;
- begin
- // Копируем из первой сетки во вторую и работаем дальше со второй сеткой
- for I := 0 to 3 do
- for II := 0 to 2 do StringGrid2.Cells[I,II] := StringGrid1.Cells[I,II];
- // ПЕРВЫЙ ЭТАП РЕШЕНИЯ - Приводим к треугольному виду
- VS := 0; // Номер строки которую вычитают (начиная с 0 (первоя строка это 0))
- US := 1; // Номер строки из которой вычитают (начиная с 0 (первоя строка это 0))
- // цикл который выберает следующую вычетаемую строку и повторяет расчет
- for III := 0 to 1 do
- begin
- VS := III; // Номер строки которую вычитают (начиная с 0 (первоя строка это 0))
- // приводим строку которую вычетаем к подходящему виду (должна начинаеться с 1)
- for Id := 3 downto 0 do
- begin
- if StrToInt(StringGrid2.Cells[VS, VS]) = 0 then Break;
- StringGrid2.Cells[Id, VS] := FloatToStr(StrToFloat(StringGrid2.Cells[Id, VS]) / StrToFloat(StringGrid2.Cells[VS, VS]));
- end; // for Id
- // Цикл который переходит от строки к строке для вычитания начиная с низу
- for II := 2 downto VS + 1 do
- begin
- // цикл который вычитает из строки строку по ячейкам с права на лево
- US := II; // Номер строки из которой вычитают (начиная с 0 (первоя строка это 0))
- for I := 3 downto 0 do
- begin
- StringGrid2.Cells[I, US] := FloatToStr( StrToFloat(StringGrid2.Cells[I, US]) - (StrToFloat(StringGrid2.Cells[I, VS]) * StrToInt(StringGrid2.Cells[VS, US])));
- end; // for I
- end; // for II
- end; // for III
- // приводим последнюю строку к подходящему виду (должна начинаеться с 1)
- VS := 2; // Номер строки которую вычитают (начиная с 0 (первоя строка это 0))
- for Id := 3 downto 2 do
- begin
- if StrToInt(StringGrid2.Cells[VS, VS]) = 0 then Break;
- StringGrid2.Cells[Id, VS] := FloatToStr(StrToFloat(StringGrid2.Cells[Id, VS]) / StrToFloat(StringGrid2.Cells[VS, VS]));
- end; // for Id
- // ВТОРОЙ ЭТАП РЕШЕНИЯ - Находим наши X Y Z
- // находим Z и выводим на форму
- Edit3.Text := StringGrid2.Cells[3, 2];
- // находим Y и выводим на форму
- Edit2.Text := FloatToStr(StrToFloat(StringGrid2.Cells[3, 1]) - (StrToFloat(Edit3.Text) * StrToFloat(StringGrid2.Cells[2, 1])));
- // находим X и выводим на форму
- Edit1.Text := FloatToStr(StrToFloat(StringGrid2.Cells[3, 0]) - (StrToFloat(Edit3.Text) * StrToFloat(StringGrid2.Cells[2, 0])) - (StrToFloat(Edit2.Text) * StrToFloat(StringGrid2.Cells[1, 0])));
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement