Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2017, 19:33   #1
artiom4356
Пользователь
 
Регистрация: 16.08.2013
Сообщений: 78
По умолчанию Метод Гауса

Не знаю в чём проблема но код работает частично. Особенно когда считает последнюю строку вот в этом примере. Элементы 2 строки верные а 3 нет.
Код:
procedure TForm2.Button2Click(Sender: TObject);
var x,y,x1,y1,Col,Row,i:integer;
k,z,max:Extended;
H:boolean;
//Y_Cof: Array of Integer;
const eps = 0.00001;  // точность
begin
if RadioGroup1.Items[RadioGroup1.ItemIndex] = 'Метод Гауса' then begin //1
  for x := 0 to StringGrid1.ColCount - 2 do
  begin

    if x>StringGrid1.RowCount - 1 then break;

    max:=StrToFloat(StringGrid1.Cells[x,x]);
    i:=x;
    for y := x to StringGrid1.RowCount - 1 do
    begin
       if max<StrToFloat(StringGrid1.Cells[x,y]) then
       begin
         max:= StrToFloat(StringGrid1.Cells[x,y]);
         i:=y;
       end;
    end;
   {
  if max<eps then
  BEGIN
  ShowMessage('Нулевой столбец. Ошибка');
  break;
  END;
  for y := x to StringGrid1.RowCount do
  begin
      z:=StrToFloat(StringGrid1.Cells[y,x]);
      StringGrid1.Cells[y,x]:=StringGrid1.Cells[y,i];
      StringGrid1.Cells[y,i]:=FloatToStr(z);
  end;
  }

  h:=false;//Строка нулевая
  if StrToFloat(StringGrid1.Cells[x,x])=0 then
  begin
  for I := 0 to StringGrid1.ColCount - 2 do
  if StrToFloat(StringGrid1.Cells[i,x])<>0 then h:=true;//Строка не нулевая в ней есть число

  if StrToFloat(StringGrid1.Cells[StringGrid1.ColCount-1,x])=0 then
  if h=false then
  begin
  ShowMessage('Строка под номером '+FloatToStr(x)+' лишня!');
  for I := 0 to StringGrid1.ColCount - 1 do
    for y1 := x to StringGrid1.RowCount - 2 do
    begin
    StringGrid1.Cells[i,y1]:=StringGrid1.Cells[i,y1+1];
    end;
  StringGrid1.RowCount:=StringGrid1.RowCount-1;
  continue;
  end;

  if StrToFloat(StringGrid1.Cells[StringGrid1.ColCount-1,x])<>0 then
  if h=false then
  begin
  ShowMessage('СЛАУ не совместна!!');
  break;
  end;

  end;

  if StrToFloat(StringGrid1.Cells[x,x])=0 then continue;
  for y1 := x+1 to StringGrid1.RowCount - 1 do
  begin
    z:=0-StrToFloat(StringGrid1.Cells[x,y1])/StrToFloat(StringGrid1.Cells[x,x]);
    for x1 := x to StringGrid1.ColCount - 1 do
    begin
        max:=0;
        k:=z*StrToFloat(StringGrid1.Cells[x1,x]);
        max:=StrToFloat(StringGrid1.Cells[x1,y1])+k;
        ShowMessage(FloatToStr(k)+'+'+StringGrid1.Cells[x1,y1]+'='+FloatToStr(max));
        StringGrid1.Cells[x1,y1]:=FloatToStr(max);
    end;
  end;

  end;//Цик диагонали


  {
  for x := 0 to StringGrid1.ColCount - 2 do
  begin

    if x>StringGrid1.RowCount - 1 then break;


  end;
  }
end;

end;
Изображения
Тип файла: png 123.png (1.9 Кб, 61 просмотров)
Помочь!=Сделать за тебя
artiom4356 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
метод Жорданна-Гауса Lyusinda Паскаль, Turbo Pascal, PascalABC.NET 2 01.02.2016 20:09
метод Гауса Lyusinda Помощь студентам 1 01.02.2016 14:59
Метод Гауса IHORRR Помощь студентам 4 12.10.2014 04:02
Метод гауса с выбором главного элемента по столбцу teemidov Паскаль, Turbo Pascal, PascalABC.NET 0 26.02.2012 14:01
метода Гауса Виктория Нисова Visual C++ 2 01.04.2011 15:02