Двумерные массивы Паскаля – матрицы
Каждый элемент имеет свой номер, который состоит из двух чисел – номера строки, в которой находится элемент, и номера столбца.
Пример описания двумерного массива Паскаля Type Vector = array [1..5] of ; Matrix= array [1..10] of vector; Var m: matrix;. двумерный массив Паскаля m, состоящий из 10 строк, в каждой из которых 5 столбцов. При этом к каждой i -й строке можно обращаться m [ i ], а каждому j -му элементу внутри i -й строки – m [ i, j ].
Определение типов для двумерных массивов Паскаля можно задавать и в одной строке: Type Matrix= array [1..5] of array [1..10] of ; или еще проще: type matrix = array [1..5, 1..10] of ;
Ввод двумерного массива Паскаля. Пример программы ввода двумерного массива Паскаля с клавиатуры type matrix= array [1..5, 1..10] of integer; var a, : matrix; i, j: integer; { индексы массива } begin for i :=1 to 5 do {цикл для перебора всех строк} for j :=1 to 10 do {перебор всех элементов строки по столбцам} readln ( a [ i, j ]); {ввод с клавиатуры элемента, стоящего в i -й строке и j -м столбце}
Двумерный массив Паскаля можно заполнить случайным образом, т.е. использовать функцию random (N), а также присвоить каждому элементу матрицы значение некоторого выражения.
Вывод двумерного массива Паскаля на экран. for i :=1 to 5 do {цикл для перебора всех строк} begin for j :=1 to 10 do {перебор всех элементов строки по столбцам} write ( a [ i, j ]:4); {печать элементов, стоящих в i -й строке матрицы в одной экранной строке, при этом для вывода каждого элемента отводится 4 позиции} writeln ; {прежде, чем сменить номер строки в матрице, нужно перевести курсор на начало новой экранной строки} end ;
Замечание (это важно!): очень часто в программах встречается ошибка, когда ввод с клавиатуры или вывод на экран массива пытаются осуществить следующим образом: readln (a), writeln (a), где а – это переменная типа массив.
Нахождение наибольшего элемента в заданной строке матрицы Пусть задана матрица А из действительных чисел размера 3 х 4. Найти наибольший элемент во второй строке данной матрицы.
Program max_st; Type Matr=array[1..3,1..4] of real; Var max:real; a:Matr; i,j:integer; begin for i:=1 to 3 do for j:=1 to 4 do begin writeln(Введите элемент а[,i,,,j,]); readln(a[i,j]); end; max:=a[2,1]; for j:=2 to 4 do if max<a[2,j] then max:=a[2,j]; writeln(Наибольший элемент второй строки=,max:8:2); end.
Нахождение элементов массива, удовлетворяющих определенному условию Известны результаты 5 студентов по итогам экзаменов по химии и информатике. Найти фамилии студентов, сдавших оба экзамена на отлично.
program Sessia; type PR=array [1..5,1..2]of integer; Fam=array[1..5]of string[10]; var r:pr; st:fam; i,j:integer; begin for i:=1 to 5 do begin writeln('Введите фамилию ',i,'-го студента '); readln(st[i]); writeln('Введите оценку данного студента по химии (от 2 до 5)'); readln(r[i,1]); writeln('Введите оценку данного студента по информатике (от 2 до 5)'); readln(r[i,2]); end; for i:=1 to 5 do if (r[i,1]=5) and (r[i,2]=5) then writeln('Студент-отличник - ',st[i]); end.
Program sluch_chisla; Var a: array[1..50,1..50] of integer; i, j, n, m: integer; Begin Write(сколько строк?); Readln(m); Write(сколько столбцов?); Readln(n); For i:=1 to m do begin For j:=1 to n do begin a[i,j]:=random(46)-20; write(a[i,j], ); end; writeln; end; End. Сформировать с помощью датчика случайных чисел и вывести на экран матрицу, размером МхN. Элементы задаются на интервале [-20, 25]. функция random(n) генерирует числа в диапазоне от 0 до n. есть формула которая позволяет задать любой (поддерживаемый типом переменной) диапазон из которого будут браться числа. т.е. для диапазона [a,b] формула примет вид такой: x:=random(b-a+1)+a;
В двумерном массиве, состоящем из n целых чисел, найти сумму элементов в каждой строке. Размер массива произвольный. Program summastrok; Var a: array[1..50,1..50] of integer; i, j, n, m,S: integer; Begin Write(сколько строк?); Readln(m); Write(сколько столбцов?); Readln(n); For i:=1 to m do For j:=1 to n do begin write(a[,i,,,j,)=); readln (a[i,j]); end; For i:=1 to m do begin S:=0; For j:=1 to n do S:=S+a[i,j]; Writeln(сумма элементов в,i, строке равна,S); end; End.
1. Найти наименьший элемент двумерного массива. Размер MXN. Элементы задаются на интервале [-30, 45]. 2. В двумерном массиве, состоящем из целых чисел, найти наименьший элемент и номер строки, в которой он находится. Элементы вводятся с клавиатуры. Размер MXN. 3. Найти сумму элементов в каждой строке двумерного массива, состоящего из целых чисел. Размер MXN. Элементы задаются на интервале [-19, 30]. 4. Подсчитать количество положительных элементов в каждой строке матрицы размером МхN, элементы которой вводятся с клавиатуры.
1. Var a: array[1..50,1..50] of integer; b: array[1..50] of integer; i, j, m, n, max, jmax: integer; Begin Write(сколько строк?); Readln(m); Write(сколько столбцов?); Readln(n); For i:=1 to m do begin For j:=1 to n do begin write(a[,i,,,j,]=); readln (a[i,j]); end; 3.max:=b[1]; jmax:=1; For j:=2 to n do begin if b[j]>max then begin max:=b[j]; jmax:=j; end; writeln(Наибольшее количество в ;jmax ; столбце); end; end. Найти номер столбца массива размером МхN, в котором находится наибольшее количество отрицательных элементов. Элементы вводятся с клавиатуры. 2. for j:=1 to m do begin b[j]:=0; for i:=1 to n do if a[i,j]<0 then b[j]:=b[j]+1; end;
1. Упорядочить каждый столбец матрицы по возрастанию. Массив размером МхN, элементы которого задаются датчиком случайных чисел на интервале [-17;26]. 2. Сформировать матрицу