Массивы в языке Паскаль

А11 А12 А13 А14

A21 A22 A23 А24

A31 A32 A33 А34

A41 A42 A43 А44

for i:=2 to n do

for j:=2 to n-1 do

if i+j>n+1 then <инструкции>

Транспонирование матрицы.

Транспонированной матрицей называется матрица, у которой столбцы соответствуют строкам исходной квадратной матрицы. При этом элементы главной диагонали исходной и транспонированной матриц, одни и те же

.

Операция транспонирования сводится к обмену элементов матрицы, расположенных симметрично главной диагонали.

Исходная матрица

Транспонированная матрица

1

5

9

13

1

2

3

4

Фрагмент программы транспонирования матрицы:

for i:=1 to n do {Просмотр всех строк матрицы}

for j:=i+1 to n do {Просмотр всех элементов в строке, расположенных выше главной диагонали}

begin

k:=a[i,j];

a[i,j]:= a[j,i];

a[j,i]:= k;

end;

1.4 Примеры задач

1. Найти сумму всех элементов некоторого двумерного массива и сравнить их с произведением элементов некоторой строки.

program zadacha_1;

uses crt;

var

a: array[1 50,1 50] of integer; {массив}

i,j: integer; {переменные счетчики}

n,m: integer; {количество строк и столбцов массива}

s: integer; {сумма элементов массива}

p: integer; {произведение элементов некоторой строки}

q: integer; {некоторая строка}

begin

clrscr;

write('Введите количество строк: ');

readln(n);

write('Введите количество столбцов: ');

readln(m);

for i:=1 to n do

for j:=1 to m do

begin

write('a[',i,',',j,']=');

readln(a[i,j]);

end;

writeln('Матрица:');

for i:=1 to n do

begin

for j:=1 to m do

begin

write(a[i,j]:3);

end;

readln;

end;

for i:=1 to n do

for j:=1 to m do

begin

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

end;

write('Введите номер строки для работы: ');

readln(q);

p:=1;

for j:=1 to m do

begin

p:=p*a[q,j];

end;

writeln('Сумма элементов матрицы: ',s);

writeln('Произведение элементов строки ',q,' равна ',p);

if s>p then

begin

writeln('Сумма больше произведения');

end

else

begin

writeln('Произведение больше произведения');

end;

readln;

end.

2.Поменять второй столбец матрицы с предпоследним.

program zadacha_2;

uses crt;

var

a: array [1 50,1 50] of integer;

b: array [1 50,1 50] of integer;

m,n,i,j: integer;

begin

clrscr;

writeln('Количество строк');

readln(n);

writeln('Количество столбцов');

readln(m);

for i:= 1 to n do

for j:= 1 to m do

begin

write ('a[',i,',',j,']=');

readln (a[i,j]);

end;

writeln('Исходная матрица:');

for i:=1 to n do begin

for j:=1 to m do

write (a[i,j]);

writeln;

end;

for i:=1 to n do begin

for j:=1 to m do

b[i,j]:=a[i,j];

end;

for i:=1 to n do begin

a[i,2]:=b[i,m-1];

end;

for i:=1 to n do begin

a[i,m-1]:=b[i,2];

end;

writeln('Полученная матрица:');

for i:=1 to n do begin

for j:=1 to m do

write (a[i,j]);

writeln;

end;

readln;

end.

3.Дана матрица размерности m*n. Расположить элементы последнего столбца по убыванию.

program zadacha_3;

uses crt;

var

a:array [1 50] of integer;

b:array [1 50] of integer;

k,i,m,j,n,r,l:integer;

begin

clrscr;

write('Введите количество строк');

readln(n);

write('Введите количество столбцов');

readln(m);

for i:=1 to n do

for j:=1 to m do

begin

write('a[',i,']={b[',j,']=}');

readln(a[i]);

end;

for i:=1 to n-1 do

for k:=i+1 to n do

{for j:=1 to m do}

if a[k]>a[i] then

begin

r:=a[i];

a[i]:=a[k];

a[k]:=r;

end;

writeln('Отсортированый массив:');

for i:=1 to n do

writeln(a[i]:4);

readln;

end.

4. Дана квадратная матрица. Транспонировать её. Посчитать сумму всех нечётных элементов транспонированной матрицы.

program zadacha_4;

uses crt;

var

a:array [1 5,1 5] of integer;

S,i,j,n,c:integer;

begin

clrscr;

write ('введите кол-во строк и столбцов ');

readln (n);

for i:=1 to n do

for j:=1 to n do

begin

write ('a[',i,',',j,']=');

readln (a[i,j]);

end;

for i:=1 to n do

for j:=i+1 to n do

begin

c:=a[i,j];

a[i,j]:=a[j,i];

a[j,i]:=c;

end;

S:=0;

for j:=1 to n do

for i:=1 to n do

begin

if a[j,i] mod 2 <>0 then

begin

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

end;

end;

writeln ('S=',S);

readln;

end.

5. Дан двумерный массив. Посчитать сумму его двух столбцов, вывести большую сумму.

program zadacha_5

uses crt;

var

a:array[1 3,1 3] of integer;

i,j,m,n,s,s1,p,p1,max,p3:integer;

begin

clrscr;

write('введите количество строк');

readln(n);

write('введите количество столбцов');

readln(m);

for i:=1 to n do

for j:=1 to m do

begin

write('a[',i,',',j,']=');

readln(a[i,j]);

end;

begin

write('введите номер столбца');

readln(p);

for i:=1 to n do

for j:=1 to m do

if j=p then s:=s+a[i,p];

write('s=',s);

readln;

end;

s1:=0;

begin

write('введите номер другого столбца');

readln(p1);

for i:=1 to n do

for j:=1 to m do

if j=p1 then s1:=s1+a[i,p1];

write ('s1=', s1);

readln;

end;

begin

max:=s;

if s < s1 then

begin

max:=s1;

write('максимальная сумма',max);

readln;

write('вывести на экран номер столбца большей суммы', p3);

readln(p3);

end;

end;

end.

end.

6. Заполнить матрицу по образцу:

0

0

0

0

program zadacha_6;

uses crt;

var

a:array [1 50,1 50] of integer;

n:integer;

i,j,k:integer;

begin

clrscr;

write ('Введите количество строк и столбцов в матрице');

readln (n);

k:=0;

for i:=1 to n do

for j:=1 to n do

if i=j then

begin

a[i,j]:=k;

k:=k+1;

end

else

begin

a[i,j]:=0;

end;

for i:=1 to n do

for j:=1 to n do

begin

writeln('a[',i,',',j,']=',a[i,j]);

readln;

end;

readln; end.

7. Дана квадратная матрица порядка N. В матрице вычислить среднее арифметическое положительных элементов, стоящих на главной диагонали

program zadacha_7;

uses crt;

Var

a:array[1 50,1 50] of integer;{массив}

i,j:integer;

s,n,k:integer;

sr:real;

begin

clrscr;

write('введите кол-во строк');

readln(n);

write('введите кол-во столбцов');

readln(n);

write ('введите кол-во чисел');

readln(k);

for i:=1 to n do

for j:=1 to n do

begin

write('a[',i,',',j,']=');

readln(a[i,j]);

end;

s:=0;

begin

for i:=1 to n do

for j:=1 to n do

if a[i,j] > 0 then

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

sr:=s/n;

end;

write('sr=',sr);

readln;

end.

8. Найти сумму всех элементов квадратной матрицы, расположенных по главной диагонали и выше ее.

Страница:  1  2  3  4  5 


Другие рефераты на тему «Программирование, компьютеры и кибернетика»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы