Цитата(Lesenok @ 5.12.2008, 19:14 ) | | как делаются задачи такого рода? |
Просто:
(модуль - MYUNIT.PAS)
| Код | unit myunit;
interface
const size= 3; type E = integer; matrix = array[1 .. size, 1 .. size] of E;
function min(const m: matrix): E; function max(const m: matrix): E;
procedure add(const a, b: matrix; var res: matrix); procedure sub(const a, b: matrix; var res: matrix); procedure scale(const a: matrix; f: E; var res: matrix);
procedure print(const m: matrix);
implementation
function min(const m: matrix): E; var i, j: integer; T: E; begin T := m[1, 1]; for i := 1 to size do for j := 1 to size do if m[i, j] < T then T := m[i, j]; min := T; end; function max(const m: matrix): E; var i, j: integer; T: E; begin T := m[1, 1]; for i := 1 to size do for j := 1 to size do if m[i, j] > T then T := m[i, j]; max := T; end;
procedure add(const a, b: matrix; var res: matrix); var i, j: integer; begin for i := 1 to size do for j := 1 to size do res[i, j] := a[i, j] + b[i, j]; end; procedure sub(const a, b: matrix; var res: matrix); var i, j: integer; begin for i := 1 to size do for j := 1 to size do res[i, j] := a[i, j] - b[i, j]; end;
procedure scale(const a: matrix; f: E; var res: matrix); var i, j: integer; begin for i := 1 to size do for j := 1 to size do res[i, j] := a[i, j] * f; end;
procedure print(const m: matrix); var i, j: integer; begin for i := 1 to size do begin for j := 1 to size do write(m[i, j]:5); writeln end; end;
end. |
(основная программа)
| Код | uses myunit; const a: matrix = ( (1, 2, 3), (4, 5, 6), (6, 3, 4) ); b: matrix = ( (4, 7, 9), (2, 6, 5), (5, 3, 8) ); c: matrix = ( (4, 9, 2), (5, 7, 1), (3, 5, 2) );
var z, t1, t2: matrix;
begin scale(b, max(a), t1); { t1 = b*max(a) } scale(c, min(b), t2); { t2 = c*min(b) } add(t1, t2, t1); { t1 = t1 + t2 = b*max(a) + c*min(b) } scale(t1, max(b), t1); { t1 = t1 * max(b) } scale(a, max(c), t2); { t2 = a * max(c) } sub(t1, t2, t1); { t1 = t1 - t2 }
print(t1);
end. |
|