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

5 Определить столбец прямоугольной матрицы с максимальной

суммой элементов и, если его номер больше заданного,

сформировать матрицу из стобцов исходной до найденного

столбца, иначе сформировать массив из элементов

заданного столбца.

program Z433_5;

uses Z433_5;

Var A,B:matr;

C:mass1;

S:mass2;

i,j,k,G:integer;

BEGIN

for i := 1 to n do

for j := 1 to m do

readln(A[i,j]);

readln(G);

Sum(A,s);

Maximum(S,k);

if k > G then

Begin

CreateMatr(A,k,B);

for i := 1 to n do

Begin

for j := 1 to k do

write(B[i,j]:5:3,' ');

writeln;

end;

end

else Begin

CreateMass(A,k,C);

for i := 1 to n do

writeln(C[i]:5:3);

end;

readln;

END.

Unit Z433_5;

interface

Const n = 3;

m = 4;

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

mass1 = array[1..n] of real;

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

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

procedure Maximum(S:mass2; Var k:integer); {k - максимальный элемент массива S}

procedure CreateMatr(A:matr; k:integer; Var B:matr); {формирует матрицу из столбцов исходной до k-го}

procedure CreateMass(A:matr; k:integer; Var C:mass1); {формирует массив из элементов k-го столбца исходной матрицы}

implementation

procedure Sum(A:matr; Var S:mass2);

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; {Sum}

procedure Maximum(S:mass2; Var k:integer);

Var i:integer;

max:real;

Begin

max := S[1];

k := 1;

for i := 2 to m do

if S[i] > max then

Begin

max := S[i];

k := i;

end;

end; {Maximum}

procedure CreateMatr(A:matr; k:integer; Var B:matr);

Var i,j:integer;

Begin

for i := 1 to n do

for j := 1 to k do

B[i,j] := A[i,j];

end; {CreateMatr}

procedure CreateMass(A:matr; k:integer; Var C:mass1);

Var i:integer;

Begin

for i := 1 to n do

C[i] := A[i,k];

end; {CreateMass}

END.

6 Если заданная квадратная целочисленная матрица является треугольной(элементы выше главной диагонали равны нулю),вычислить её среднее арифметическое, иначе определить, сколько элементов, лежащих выше главной диагонали, отличны от нуля.

program z433_6;

uses Z433_6;

Var A:matr;

i,j,k:integer;

s:real;

b:boolean;

BEGIN

for i := 1 to n do

for j := 1 to n do

readln(a[i,j]);

Triangle(A,k,b);

if b then

Begin

SrArifm(A,s);

writeln(s);

end

else writeln(k);

readln;

END.

Unit Z433_6;

interface

Const n = 3;

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

procedure SrArifm(A:matr; Var s:real); {s - среднее арифметическое матрицы A}

procedure Triangle(A:matr; Var k:integer; Var b:boolean);

{Если b = true, то матрица треугольная; k - число элементов выше главной диагонали, отличных от нуля}

implementation

procedure Triangle(A:matr; Var k:integer; Var b:boolean);

Var i,j:integer;

Begin

b := true;

k := 0;

for i := 1 to n do

for j := 1 to n do

if (j > i) and (A[i,j] <> 0) then

Begin

b := false;

k := k + 1;

end;

end; {Rect}

procedure SrArifm(A:matr; Var s:real);

Var i,j:integer;

Begin

s := 0;

for i := 1 to n do

for j := 1 to n do

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

s := s / (n * n);

end; {SrArifm}

begin

END.