КАТЕГОРИИ: Архитектура-(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.
Дата добавления: 2014-01-07; Просмотров: 783; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |