Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
прога.docx
Скачиваний:
77
Добавлен:
12.06.2015
Размер:
47.24 Кб
Скачать

7 Если к-й столбец прямоугольной матрицы имеет минимальную сумму элементов, определить сумму элементов столбцов до к-ого, иначе - сумму элементов столбцов после к-ого.

Unit Z433_7;

interface

Const n = 3, m = 4;

Type matr = array[1..n,1..m] of real;

mas = array[1..m] of real;

procedure p1(A:matr; Var S:mas); {записывает в массив S суммы элементов столбцов}

procedure p2(S:mas; Var nom:integer); {l - минимальный элемент массива S}

procedure p3(A:matr; l1,l2:integer; Var sum:real);

implementation

procedure p1;

Var i,j:integer;

Begin for j := 1 to m do

Begin S[j] := 0;

for i := 1 to n do

S[j] := S[j] + A[i,j];

end;

end; {p1}

procedure p2;

Var j:integer;

Smin:real;

Begin Smin := S[1];

nom := 1;

for j := 1 to m do

if S[j] < Smin then

Begin Smin := S[j];

nom := j;

end;

end; {p2}

procedure p3;

Var i,j:integer;

Begin sum := 0;

for i := 1 to n do

for j := l[1] to 1[2] do

sum := sum + A[i,j];

end; {p3}

end.

program z433_7;

uses 433_7;

const n = 3, m = 4;

Type matr = array[1..n,1..m] of real;

mas = array[1..m] of real;

Var A:matr; S:mas; i,j,k,nom:integer; sum1,sum2:real;

Begin for i := 1 to n do

for j := 1 to m do readln(A[i,j]);

readln(k);

p1(A,S); p2(S,nom);

if (nom = k) then

Begin p3(A,1,k,sum1);

Writeln (sum1)

end else

Begin p3(A,k+1,m,sum2);

writeln(sum2);

end;

end.

8 Если целочисленная квадратная матрица симметрична относително

главной диагонали, обнулить все элементы, лежащие выше главной

диагонали, и определить сумму элементов, лежащих ниже

главной диагонали.

program z433_8;

uses Z433_8;

Var A:matr;

i,j,s:integer;

BEGIN

for i := 1 to n do

for j := 1 to n do

readln(A[i,j]);

if Sim(A) then

Begin

NulSum(A,s);

write('Сумма элементов, лежащих ниже главной диагонали: ');

writeln(s);

end

else writeln('Матрица не симметрична относительно главной диагонали.');

for i := 1 to n do

Begin

for j := 1 to n do

write(A[i,j],' ');

writeln;

end;

END.

Unit Z433_8;

interface

Const n = 3;

Type matr = array[1..n,1..n] of integer;

function Sim(A:matr):boolean;

{Возвращает true, если матрица симметрична относительно главной диагонали}

procedure NulSum(Var A:matr; Var s:integer);

{Обнуляет элементы, лежащие выше главной диагонали, и подсчитывает их сумму}

implementation

function Sim(A:matr):boolean;

Var i,j,k:integer;

b:boolean;

Begin

k := 0;

b := true;

for i := 1 to n do

for j := 1 to n do

if (j < i) and (A[i,j] <> A[j,i]) then k := k + 1;

if k <> 0 then b := false;

Sim := b;

end; {Sim}

procedure NulSum(Var A:matr; Var s:integer);

Var i,j:integer;

Begin

s := 0;

for i := 1 to n do

for j := 1 to n do

if j > i then

Begin

s := s + A[i,j];

A[i,j] := 0;

end;

end; {NulSum}

END.