Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Ввод-вывод матриц

Двумерный массив

 

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

Двумерный массив можно описать тремя способами:

 

1) с использованием раздела описания типов:

Type Matrica=array[1..10, 1..10] of real;

Var a,b: matrica;

 

2) без использования раздела описания типов:

Var X: array[1..5,1..4] of integer; {Двумерный массив 5х4 элементов}

 

Полный вид двухмерного массива (матрицы):

a[1,1] a[1,2] a[1,3] a[1,4]

a[2,1] a[2,2] a[2,3] a[2,4]

a[3,1] a[3,2] a[3,3] a[3,4]

a[4,1] a[4,2] a[4,3] a[4,4]

a[5,1] a[5,2] a[5,3] a[5,4]

 

3) с использованием констант:

Const M=5; N=4;

Var Matr: array[1..M, 1..N] of real;

1) Ввод элементов матрицы осуществляют с помощью вложенных цик­лов for:

for i:=1 to 5 do

for j:=1 to 4 do Read(а[i,j]);

 

2) Вывод элементов матрицы можно осуществлять по строкам или по столбцам, но лучше, если они будут выводиться в виде таблицы, например

1 2 0 4

2 4 1 2

1 4 5 4

8 7 9 0

for i:=1 to 4 do

begin

for j:=1 to 4 do Write(a[i,j],’ ‘); {Печатается строка}

WriteLn; {Переход на новую строку}

end;

Свойства элементов матрицы:

1. если номер строки элемента совпадает с номером столбца (i=j), это означает что элемент лежит на главной диагонали матрицы.

2. если номер строки превышает номер столбца (i>j), то элемент находится ниже главной диагонали.

3. если номер столбца больше номера строки (i<j), то элемент находится выше главной диагонали.

4. элемент лежит на побочной диагонали, если его индексы удовлетворяют равенству i + j – 1 = n.

Пример1. Выведите элементы побочной диагонали квадратичной мат­рицы (3х3) на экран.

Program Primer1;

Var i,j:byte;

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

begin

for i:=1 to 3 do

for j:=1 to 3 do Read(a[i,j]);

for i:=1 to 3 do

for j:=1 to 3 do If i+j-1=3 then Write(a[i,j],’ ‘);

end.

Пример 2. Составить программу, которая формирует двумерный массив случайных чисел, находит максимальный элемент в каждой строке матрицы и выводит его на экран.

 

program primer2;

const n=3;m=3;

var a:array[1..m,1..n] of integer;

i,j,max:integer;

begin

randomize;

for i:=1 to n do

begin

for j:=1 to m do

begin

a[i,j]:=random(20);

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

end;

writeln;

end;

for i:=1 to n do

begin

max:=a[i,1];

for j:=2 to m do

if a[i,j]>max then max:=a[i,j];

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

end;

end.

Пример 3. Найти средние значения элементов каждого столбца матрицы (n,m) и вывести их на экран в виде одномерного массива.

 

program primer3;

var a:array[1..10,1..10] of integer;

b:array[1..10] of real;

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

begin

writeln('Введите n,m');

readln(n,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 j:=1 to m do

begin

S:=0;

for i:=1 to n do S:=S+a[i,j];

b[j]:=S/m;

end;

for i:=1 to m do write(b[i]:6:2,' ');

end.

 

Пример 4. Написать программу умножения двух матриц A(n, m) и B(m, l).

Например, необходимо перемножить две матрицы

 

,

Воспользовавшись правилом «строка на столбец», получим матрицу:

.

В общем виде формула для нахождения Сij матрицы имеет вид:

,

где i = 1, N и j = 1, L. Обратите внимание, что проводить операцию умножения можно только в том случае, если количество строк левой матрицы совпадает с количеством столбцов правой. Кроме того, А*В ≠ В*А.

 

program primer4;

var a,b,c: array [1..10,1..10] of integer;

i,j,k,m,n,l: byte;

s:integer;

begin

writeln('Vvedite m,n,l');

read(n,m,l);

writeln('Vvedite massiv A');

for i:=1 to n do

for j:=1 to m do read(a[i,j]);

writeln('Vvedite massiv B');

for i:=1 to m do

for j:=1 to l do read(b[i,j]);

writeln;

for i:=1 to n do

for j:=1 to l do

begin

S:=0;

for k:=1 to m do S:=S+a[i,k]*b[k,j];

c[i,j]:=S;

end;

for i:=1 to n do

begin

for j:=1 to l do write(c[i,j],' ');

writeln;

 

end;

end.

 

 

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

 

program Sort;

const m=4; n=4;

var a: array [1..n,1..m] of integer;

i,j,c,k: byte;

begin

writeln('Введите матрицу');

for i:=1 to n do

for j:=1 to m do read(a[i,j]);

writeln;

for i:=1 to n do

for k:=1 to m-1 do {k - номер просмотра}

for j:=1 to m-k do

if a[i,j]>a[i,j+1] then

begin

c:=a[i,j];

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

a[i,j+1]:=c;

end;

for i:=1 to n do

begin

for j:=1 to m do write(a[i,j],' ');

writeln;

end;

end.

 

 

 

<== предыдущая лекция | следующая лекция ==>
Примеры и решения | Лекция № 10. Семестр1
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 783; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.