Проверьте код - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д