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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2016, 19:57   #1
peggass2
Новичок
Джуниор
 
Регистрация: 29.11.2016
Сообщений: 2
По умолчанию Изменить заполнение матрицы (Pascal)

Есть программа которая решает СЛАУ методом Гаусса.
Заполнение матриц идет следующим образом:

То есть отдельно записывается каждый элемент матрицы с новой строки.
Надо что-бы заполняли по строкам пример вот:

Вот процедура заполнения матрицы:
Код:
procedure zapolnenie;
  var i,j:integer;
  begin
    write(' Какого порядка СЛАУ: ');
    readln(n);  
    for i:=1 to n do 
      begin
        writeln('Уравнение:',i);
        for j:=1 to n do
          begin
            write('Введите A(',i,',',j,'):');
            readln(a[i,j]);
          end;
        write('Свободный член: B(',i,'):');
        readln(b[i]);
      end;
  end;
Полный код программы (если понадобится):
Код:
const max=20;

var i,j,k,n,vubor:integer;
    a:array[1..max,1..max] of real;
    b:array[1..max] of real;
    x:array[1..max] of real;
    h:real;
    
procedure zapolnenie;
  var i,j:integer;
  begin
    write(' Какого порядка СЛАУ: ');
    readln(n);  
    for i:=1 to n do 
      begin
        writeln('Уравнение:',i);
        for j:=1 to n do
          begin
            write('Введите A(',i,',',j,'):');
            readln(a[i,j]);
          end;
        write('Свободный член: B(',i,'):');
        readln(b[i]);
      end;
  end;
  
procedure treugolniy_vid;
  var i,j,k:integer;
  begin
    for i:=1 to n do
      begin
        for j:=i+1 to n do
          begin
            a[j,i]:=-a[j,i]/a[i,i];
            for k:=i+1 to n do
            a[j,k]:=a[j,k]+a[j,i]*a[i,k];
            b[j]:=b[j]+a[j,i]*b[i];
          end;
      end;
  end;
  
procedure obratniy_hod;
  var i,j:integer;
  begin
    x[n]:=b[n]/a[n,n];
    for i:=n-1 downto 1 do
      begin
        h:=b[i];
        for j:=I+1 to n do
        h:=h-x[j]*a[i,j];
        x[i]:=h/a[i,i];
      end;
  end;
  
procedure vuvod;
  var i:integer;
  begin
    writeln('Решение системы:');
    for i:=1 to n do
    writeln('X(',i,')= ',x[i]:3:2);
    readln;
  end;
  
begin
   
  repeat
    writeln('-------------------------------------------------------------------------------');
    write('Использовать систему по умолчанию (1) или ввести вручную (2), для выхода (3):');
    readln(vubor);
    case vubor of
      1: begin
         
         end;
      2: begin 
          zapolnenie;
          treugolniy_vid;
          obratniy_hod;
          vuvod;
        end;
    end;
    until vubor=3;
end.
peggass2 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ заполнение матрицы farruhnet Общие вопросы C/C++ 1 13.12.2015 19:01
Матрицы. Заполнение и вывод подпрограммами. Turbo Pascal. Crazy-kun Помощь студентам 10 06.06.2013 19:31
Заполнение матрицы Satanist Помощь студентам 2 16.05.2012 11:13
Заполнение матрицы -=aHTPoПоС=- Помощь студентам 3 06.11.2009 17:33
Заполнение матрицы Pascal lebrosha Помощь студентам 3 25.05.2009 19:55