- Двумерные массивы. Cпособы описания и заполнения двумерных массивов
- Ключевые слова:
- 1. Описание двумерного массива
- 2. Заполнение 2-мерных массивов
- Упражнения на заполнение 2-мерных массивов
- Двумерные массивы. Заполнение двумерного массива по заданному правилу
- Как стать программистом
- Страницы
- Последние новости
- воскресенье, 27 октября 2013 г.
- Занятие 19. Двумерные массивы.
- Что такое двумерный массив?
- Как работать с двумерным массивом?
- Как работать с отдельным элементом массива.
- Зачем нужны двумерные массивы?
Двумерные массивы. Cпособы описания и заполнения двумерных массивов
Ключевые слова:
Двумерный массив— массив, у которого 2 индекса, например: А(3,3); В( 2, 5) и т. п.
Матрица – в математике – аналог двумерного массива – квадратная или прямоугольная таблица, состоящая из строк и столбцов:
Размер двумерного массива — количество элементов в массиве M*N,
где М – число строк, N – число столбцов (натураль – ные числа).
Квадратная матрица – матрица с равным числом строк и столбцов.
Порядок матрицы – число строк (столбцов) квадратной матрицы.
1. Описание двумерного массива
Двумерный массив – это массив массивов, т. е. двумерная таблица. Оперировать можно как с отдельными элементами массива, так и с массивом в целом.
В языке Pascal индексы заключаются в квадратные скобки:
Возможны 2 способа описания 2-мерного массива:
1 Описание массива в разделе переменных VAR:
iнач..iкон, jнач..jкон – диапазоны индексов (строк, столбцов);
t – тип элементов.
VAR y: [1..5, 1..5] of integer ;
VAR F: array [1..30] of array [1..20] of real;
VAR mb: array [1..100, 1..5] of real ;
VAR C: array [1..Max, 1..Max] OF string[10] ;
VAR A: array [1..M, 1..N] OF integer ;
2 Описание массива в разделе описания типов TYPE:
TYPE mas = array[1..20, 1..5] of integer;
TYPE t = ARRAY[1..M, 1..N] OF REAL;
2. Заполнение 2-мерных массивов
Заполнение двумерного массива возможно по строкам и столбцам, каждый из элементов можно вводить:
2 с помощью генератора случайных чисел;
3 объявление массива как CONST;
Заполнение по строкам:
А[1,1] | А[1,2] | А[1,3] | А[1,4] | А[1,5] |
А[2,1] | … | … | … | … |
… | … | … | … | … |
Для заполнения матрицы организуется наружный цикл по i, внутренний – по j (при условии, что i – строки, j –столбцы). При этом индекс строки i меняется медленнее индекса столбца j за счет того, что происходит постепенный перебор всех элементов строки, т. е. столбцов i-й строки.
Заполнение по столбцам:
А[1,1] | А[1,2] | … | … | … |
А[2,1] | … | … | … | … |
А[3,1] | … | … | … | … |
A[4,1] | … | … | … | … |
Упражнения на заполнение 2-мерных массивов
Упражнение mas1: Заполнить матрицу А( 5, 10) по строкам методом генерирования случайных чисел.
A: array [1..5, 1..10] of INTEGER;
FOR i:= 1 to 5 DO
FOR j:=1 TO 10 DO
A[i, j]:= random(10);
end;
Упражнение mas2: Заполнить матрицу А(3, 4) по столбцам методом ввода чисел с клавиатуры.
Var A: array [1..N, 1..M] of INTEGER;
FOR j:= 1 to M DO
FOR i:=1 TO N DO
write(‘Введите элемент A[‘,i,’,’,j,’]=’);
readLn(A[i, j]);
writeLn(‘Результирующая матрица A:’);
Упражнение mas3: Дана матрица A( N? M), состоящая из натуральных чисел. Определить ее максимальный элемент и его индексы.
A: array [1..t, 1..r] of INTEGER;
n, m, Max, iMax, jMax, k: integer;
write(‘Введите число строк N=’); readLn(N);
write(‘Введите число столбцов M=’); readLn(M);
FOR i:= 1 to N DO
Max:= A[1,1]; iMax:=1; jMax:=1; k:=0;
IF A[i, j] > Max then
Max:= A[i, j]; iMax:=i; jMax:=j; k:=1
WriteLn(‘Max= ’ ,Max,’ в строке: ‘,imax, ‘ столбце :’, jmax);
Источник
Двумерные массивы. Заполнение двумерного массива по заданному правилу
Тема: Двумерные массивы. Заполнение двумерного массива по заданному правилу.
Цели:отработать навыки работы с элементами двумерного массива, научиться заполнять двумерные массивы по заданному правилу, научиться выводить зависимость между номером строки и номером столбца; развитие логического мышления учащихся.
1. Актуализация знаний
Массивы, положение элементов в которых описывается двумя индексами, называются двумерными. Структура такого массива может быть представлена прямоугольной матрицей. Каждый элемент матрицы однозначно определяется указанием номера строки и столбца, номер строки – i, номер столбца – j.
Рассмотрим матрицу А размером n*m:
а11 | а12 | а13 | а14 |
а21 | а22 | а23 | а24 |
а31 | а32 | а33 | а34 |
Матрица из 3 строк и 4 столбцов, количество строк n=3, количество столбцов m=4. Каждый элемент имеет свой номер, который состоит из двух чисел – номера строки, в которой находится элемент, и номера столбца. Например, а23 – это элемент, стоящий во второй строке и в третьем столбце.
Двумерный массив на языке Турбо Паскаль можно описать по-разному. Чтобы описать двумерный массив, надо определить какого типа его элементы, и каким образом они пронумерованы (какого типа его индекс). Существует несколько способов описания двумерного массива.
1 способ
Type Mas = array [1..maxN] of ; <Одномерный массив>
Type TMas = array [1..maxM] of Mas;
2 способ
Type TMas = array [1..maxN] of array [1..maxM] of ;
3 способ
Type = array [1..maxN, 1..maxM] of ;
Предпочтение отдается третьему способу описания двумерного массива.
Const N=3; M=4;
Type TMas= array [1..N, 1..M] of integer;
Формирование двумерного массива можно осуществлять четырьмя способами: ввод с клавиатуры, через генератор случайных чисел, по заданному правилу или с помощью файла.
1) Формирование двумерного массива при помощи ввода с клавиатуры и алгоритм построчного вывода элементов матрицы.
Const N=10;M=10;
Type Tmas= array [1..N,1..M] of integer;
Var A:Tmas; i,j:integer;
Begin
<Ввод элементов матрицы>
For i:=1 to N do
For j:=1 to M do
Read(A[i,j]);
<Вывод элементов матрицы>
For i:=1 to N do begin
For j:=1 to M do
Write(A[i,j]:4); <Печатается первая строка>
Writeln <Переход на новую строку>
end;
End.
2) Фрагмент программы формирования двумерного массива через генератор случайных чисел.
2. Изучение нового материала. Заполнение массива по правилу
Рассмотрим несколько фрагментов программ заполнения двумерного массива по некоторому закону. Для этого необходимо вывести правило заполнения.
1. Заполнить массив А размером n*m следующим образом, например
1 2 3 4 5 6 7 8
16 15 14 13 12 11 10 9
17 18 19 20 21 22 23 24
32 31 30 29 28 27 26 25
33 34 35 36 37 38 39 40
48 47 46 45 44 43 42 41
Массив заполняется по принципу «змейки». Правило заполнения: если номер строки – нечетное число, то A[i,j]=(i-1)*m+j, иначе A[i,j]=i*m-j+1.
program M1А;
var A:array[1..100,1..100] of integer;
n,m,i,j: integer;
begin
readln(n,m);
for i:=1 to n do begin
for j:=1 to m do
begin
if i mod 2 = 1 then
A[i,j]=(i-1)*m+j
else
A[i,j]=i*m-j+1;
write(A[i,j]:3);
end;
writeln;
end;
readln;
end.
Приведем пример программы другого способа заполнения по заданному правилу:
program M1В;
var A:array[1..100,1..100] of integer;
n,m,i,j: integer;
c: integer;
begin
readln(n,m);
c:=1;
for i:=1 to n do
begin
for j:=1 to m do
begin
A[i,j]:=c;
if (i mod 2 = 0) and (j<>m) then
dec(c)
else
inc(c);
write(A[i,j]:3);
end;
c:=c+m-1;
writeln;
end;
readln;
end.
2. Заполнить массив A по следующему принципу:
1 0 2 0 3 0 4
0 5 0 6 0 7 0
8 0 9 0 10 0 11
0 12 0 13 0 14 0
program M2;
var A:array[1..100,1..100] of integer;
n,m,i,j: integer;
c: integer;
begin
readln(n,m);
c:=0;
for i:=1 to n do
begin
for j:=1 to m do
begin
if (i-1+j) mod 2 = 0 then
A[i,j]:=0
else
begin
inc(c);
A[i,j]:=c;
end;
write(A[i,j]:5);
end;
writeln;
end;
readln;
end.
3. Заполнить массив A по следующему принципу:
1 12 13 24 25 36
2 11 14 23 26 35
3 10 15 22 27 34
4 9 16 21 28 33
5 8 17 20 29 32
6 7 18 19 30 31
var A:array[1..100,1..100] of integer;
n,m,i,j: integer;
c: integer;
begin
readln(n,m);
c:=1;
for j:=1 to m do
begin
for i:=1 to n do
begin
A[i,j]:=c;
if (j mod 2 = 0) and (i<>n) then
dec(c)
else
inc(c);
end;
c:=c+n-1;
end;
for i:=1 to n do
begin
for j:=1 to m do
write(A[i,j]:5);
writeln;
end;
readln;
end.
4. Заполнить массив A по следующему принципу:
1 2 3 4 5
2 3 4 5 1
3 4 5 1 2
4 5 1 2 3
5 1 2 3 4
var i,j,m,c,d: integer;
A:array[1..100,1..100] of integer;
begin
c:=1;
readln(m);
for j:=1 to m do
begin
i:=c;
d:=1;
repeat
A[i,j]:=d;
inc(i);
if i>m then
i:=1;
inc(d);
until i=c;
dec(c);
if c 21.07.2009
Источник
Как стать программистом
Обучение основам программирования на C для чайников.
Страницы
Последние новости
YoungCoder теперь и на Stepikе. Записывайтесь: https://vk.cc/75rISy
Чтобы записаться на курс, необходимо зарегистрироваться на Степике: https://vk.cc/75rIC4
Это моя личная ссылка-приглашение на Stepik для вас. Регистрируясь по этой ссылке, записываясь на курсы и решая задачи, Вы помогаете автору данного сайта принять участие в конкурсе платформы Stepik! Подробности конкурса здесь: https://vk.cc/75rKuS
воскресенье, 27 октября 2013 г.
Занятие 19. Двумерные массивы.
Прочитайте улучшенную версию этого урока «Двумерные массивы».
В новой версии:
- Ещё более доступное объяснение
- Дополнительные материалы
- 10 задач на программирование с автоматической проверкой решения
Что такое двумерный массив?
Рис.1. Двумерный массив. Общий вид. |
Рис.2 Двумерный массив, объявление. |
Как работать с двумерным массивом?
Рис.3. Двумерный массив инициализированный при объявлении |
Рис.4. Двумерный массив, инициализированный не полностью. |
Как работать с отдельным элементом массива.
Рис.5. Обращение к элементу двумерного массива. |
Рис.6. Двумерный массив. Поэлементный вывод на экран. |
Зачем нужны двумерные массивы?
Напишите в комментариях пожалуйста, понятен ли вам этот пример, или лучше его подробно расписать?
Если этот материал кажется вам полезным, расскажите о нем друзьям используя кнопки основных социальных сетей, расположенные ниже.
Напишите программу, работающую следующим образом. Создайте массив 10 на 10. Заполните его нулями. Считайте два произвольных целых числа с клавиатуры, меньших либо равных 10. Первое число количество строк, второе — количество столбцов. Напишите функцию, которая заполняет массив по спирали и выводит его на экран. Т.е. если бы мы ввели 6 и 7, то получили бы следующий массив.
При этом табличка приблизительно должна быть выровнена по центру окна вывода.
Готовое решение пользователя с ником «Дмитрий». За проявленное упорство и трудолюбие, и как первый выполнивший правильно практическое задание, Дмитрий награждается печенькой:
Источник