Advertisement
Guest User

er

a guest
Apr 26th, 2015
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 3.13 KB | None | 0 0
  1. procedure TF_MGaussa.Button1Click(Sender: TObject);
  2. var
  3.   I,II,III,Id, VS, US: Integer;
  4. begin
  5. // Копируем из первой сетки во вторую и работаем дальше со второй сеткой
  6. for I := 0 to 3 do
  7.   for II := 0 to 2 do StringGrid2.Cells[I,II] := StringGrid1.Cells[I,II];
  8.  
  9. //  ПЕРВЫЙ ЭТАП РЕШЕНИЯ - Приводим к треугольному виду
  10. VS := 0;  // Номер строки которую вычитают (начиная с 0 (первоя строка это 0))
  11. US := 1;  // Номер строки из которой вычитают (начиная с 0 (первоя строка это 0))
  12. // цикл который выберает следующую вычетаемую строку и повторяет расчет
  13. for III := 0 to 1 do
  14. begin
  15.   VS := III; // Номер строки которую вычитают (начиная с 0 (первоя строка это 0))
  16.   // приводим строку которую вычетаем к подходящему виду (должна начинаеться с 1)
  17.   for Id := 3 downto 0 do
  18.     begin
  19.       if StrToInt(StringGrid2.Cells[VS, VS]) = 0 then Break;
  20.       StringGrid2.Cells[Id, VS] := FloatToStr(StrToFloat(StringGrid2.Cells[Id, VS]) / StrToFloat(StringGrid2.Cells[VS, VS]));
  21.     end; // for Id
  22.   // Цикл который переходит от строки к строке для вычитания начиная с низу
  23.   for II := 2 downto VS + 1 do
  24.     begin
  25.       // цикл который вычитает из строки строку по ячейкам с права на лево
  26.       US := II; // Номер строки из которой вычитают (начиная с 0 (первоя строка это 0))
  27.       for I := 3 downto 0 do
  28.         begin
  29.           StringGrid2.Cells[I, US] := FloatToStr( StrToFloat(StringGrid2.Cells[I, US]) - (StrToFloat(StringGrid2.Cells[I, VS]) * StrToInt(StringGrid2.Cells[VS, US])));
  30.         end; // for I
  31.     end; // for II
  32. end; // for III
  33. // приводим последнюю строку к подходящему виду (должна начинаеться с 1)
  34. VS := 2;  // Номер строки которую вычитают (начиная с 0 (первоя строка это 0))
  35. for Id := 3 downto 2 do
  36.   begin
  37.     if StrToInt(StringGrid2.Cells[VS, VS]) = 0 then Break;
  38.     StringGrid2.Cells[Id, VS] := FloatToStr(StrToFloat(StringGrid2.Cells[Id, VS]) / StrToFloat(StringGrid2.Cells[VS, VS]));
  39.   end; // for Id
  40. //  ВТОРОЙ ЭТАП РЕШЕНИЯ - Находим наши X Y Z
  41. // находим Z и выводим на форму
  42. Edit3.Text := StringGrid2.Cells[3, 2];
  43. // находим Y и выводим на форму
  44. Edit2.Text := FloatToStr(StrToFloat(StringGrid2.Cells[3, 1]) - (StrToFloat(Edit3.Text) * StrToFloat(StringGrid2.Cells[2, 1])));
  45. // находим X и выводим на форму
  46. Edit1.Text := FloatToStr(StrToFloat(StringGrid2.Cells[3, 0]) - (StrToFloat(Edit3.Text) * StrToFloat(StringGrid2.Cells[2, 0])) - (StrToFloat(Edit2.Text) * StrToFloat(StringGrid2.Cells[1, 0])));
  47. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement