Проверьте код - Pascal ABC (13360)

Узнай цену своей работы

Формулировка задачи:

Уважаемые эрудиты и сенсеи КиберФорума, можете ли проверить на правильность данный код и, если что, подкорректировать? Заранее спасибо!

Решение задачи: «Проверьте код»

textual
Листинг программы
program kursovaya;
 
uses crt;
type
  int = 0..10;
  vec = array [0..10] of real;
  matr = array [0..10, 0..10] of real;
 
var
  x, x_1, ax, ax_1, c: vec;
  e, a, a_1, b, b_1, br, br_1: matr;
  m, n: int;
  name: char;
 
procedure readvec(var x: vec; name: char; n: int);
var
  i: int;
begin
  writeln(' Ввести вектор ', name, ' размера n=', n);for i := 0 to n - 1 do
  begin
    write(' ', name, '[', i:2, ']=');readln(x[i])
  end;
end;//readvec
 
procedure writevec(var x: vec; name: char; n: int);
var
  i: int;
begin
  writeln(' Вывести вектор ', name, ' размера n=', n);for i := 0 to n - 1 do
  begin
    write(' ', name, '[', i:2, ']=');writeln(x[i]:10:5)
  end;
end;//writevec
 
procedure readmatr(var y: matr; name: char; n, m: int);
var
  i, j: int;
begin
  writeln('  Ввести матрицу ', name,
     ' размера : n=', n, ', * m=', m);for i := 0 to n - 1 do
    for j := 0 to m - 1 do
    begin
      write('  ', name, '[', i:2, ' ,', j:2, ']= ');
      readln(y[i, j])
    end;
end;//readmatr
 
procedure writematr(var y: matr; name: char; n, m: int);
var
  i, j: int;
begin
  writeln('  Вывести матрицу ', name,
     ' размера: n=', n, ', * m=', m);
  for i := 0 to n - 1 do
    for j := 0 to m - 1 do
    begin
      write('  ', name, '[', i:2, ' ,', j:2, ']= ');
      writeln(y[i, j]:8:4)
    end;
end;//writematr
 
procedure Em(var E: matr; n: int);
var
  i, j: int;
begin
  for i := 0 to n do
    for j := 0 to n do
      if i = j then E[i, j] := 1 else E[i, j] := 0;
end;//end //E
 
procedure Rmatr(var a, b, c: matr; n, m: int);
var
  i, j: int;
begin
  for i := 0 to n do
    for j := 0 to m do
      c[i, j] := a[i, j] - b[i, j];
end;//Rmatr
 
procedure obrmatr(var AIS, AP: matr; n: int);
var
  i, j, k, l: integer;
  a: matr;
begin
  a := AIS;
  n := n - 1;
  for k := 0 to n do 
  begin
    for j := 0 to n do
      if (j <> k) then AP[k, j] := -a[k, j] / a[k, k];
    for i := 0 to n do
      if (i <> k) then AP[i, k] := a[i, k] / a[k, k];
    for i := 0 to n do
      for j := 0 to n do
        if (i <> k) and (j <> k)
          then AP[i, j] := a[i, j] - a[i, k] * a[k, j] / a[k, k];
    AP[k, k] := 1 / a[k, k];a := AP;
  end;
end;//end obrmatr
 
procedure matrvec(var b: matr; var c, x: vec; n: int);
var
  i, j: int;
begin
  for j := 0 to n - 1 do 
  begin
    x[j] := 0;
    for i := 0 to n - 1 do
      x[j] := x[j] + b[i, j] * c[i]
  end;
end;//end matrvec
     { ТЕЛО ПРОГРАММЫ }
begin
  clrscr;
  readvec(c, 'C', 2);
  readmatr(a, 'A', 2, 2);
  readmatr(a_1, 'Z', 2, 2);
  Em(e, 2);rmatr(e, a, br, 2, 2);rmatr(e, a_1, br_1, 2, 2);obrmatr(br, b, 2);obrmatr(br_1, b_1, 2);matrvec(B, C, x, 2);matrvec(B_1, C, x_1, 2);matrvec(A, x, ax, 2);matrvec(A_1, x_1, ax_1, 2);
  if (ax[0] <= c[0]) and (ax[1] <= c[1]) then
    writeln('   Экономика матрица A -  эффективна') else
    writeln('   Экономика матрица A -  не эффективна');
  if (ax_1[0] <= c[0]) and (ax_1[1] <= c[1]) then
    writeln('   Экономика матрица A_1 -  эффективна') else
    writeln('   Экономика матрица A_1 -  не эффективна');
  readln;
  writematr(B, 'B', 2, 2);
  writematr(B_1, 'Z', 2, 2);
  writevec(x, 'x', 2);
  writevec(x_1, 'y', 2);
  readln;
end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5
Похожие ответы