• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Паскаль. Проверка системы уравнений на совместимость

alex_6282

Ученик
Регистрация
5 Июн 2014
Сообщения
1
Реакции
0
Баллы
0
Паскаль. Проверка системы уравнений на совместимость

Помогите написать программу на паскале для проверки совместимости системы уравнений
 
Помогите написать программу на паскале для проверки совместимости системы уравнений
И только-то? Ну ладно, получите:
Код:
Const
 M_max=9; {Max number of equations}
 N_max=9; {Max number of unknowns}
 E=0.000001; {coefficients smaller then E are treated az equal to zero}

Type
 Vector=Array[1..N_max+1] of Real;
 Matrix=Array[1..M_max] of Vector;

Var
 a:Matrix;
 i,j,M,N:byte;

Procedure Step_Form(var SF:Matrix; Ms,Ns:Byte);
var
 i,j,k,q:byte;
 c1:real;
 V:Vector;
begin
 for i:=1 to Ms do
  begin
   c1:=SF[i][i];
   if c1=0 then
    begin
     k:=i;
     repeat
      if k<Ms then Inc(k);
     until (SF[k][i]<>0) or (k=Ms);
     if SF[k][i]<>0 then
      begin
       V:=SF[i];
       SF[i]:=SF[k];
       SF[k]:=V;
      end;
    end;
   c1:=SF[i][i];
   if c1<>0 then
    begin
     for j:=i to Ns do
      begin
       a[i][j]:=a[i][j]/c1;
       if Abs(a[i][j])<E then a[i][j]:=0;
      end;
     for k:=i+1 to N do
      begin
       c1:=SF[k][i];
       if c1<>0 then for j:=i to Ns do
        begin
         a[k][j]:=a[i][j]-a[k][j]/c1;
         if Abs(a[k][j])<E then a[k][j]:=0;
        end;
      end;
    end;
  end;
end;

Function Rank(var R:Matrix; Mr,Nr:Byte):Byte;
var
 i,j,Rnk:byte;
 b:boolean;
begin
 Rnk:=Mr+1;
 repeat
  Dec(Rnk);
  b:=false;
  for j:=1 to Nr do
   if R[Rnk][j]<>0 then b:=true;
 until b or (Rnk=1);
 if (Rnk=1) and not b then Rnk:=0;
 Rank:=Rnk;
end;

Begin
 Write('Number of equations = ');
 Readln(M);
 Write('Number of unknowns = ');
 Readln(N);
 for i:=1 to M do
  begin
   for j:=1 to N do
    begin
     Write('a',i,j,'= ');
     Readln(a[i][j]);
    end;
   Write('b',i,'= ');
   Readln(a[i][N+1]);
  end;
 writeln;
 writeln;
 Step_Form(a,M,N+1);
 if Rank(a,M,N)=Rank(a,M,N+1) then
  writeln('System is collocated!')
 else
  writeln('System is NOT collocated!');
 Readln
End.
 
Назад
Сверху