Программирование. Двумерный массив


Чтобы посмотреть презентацию с оформлением и слайдами, скачайте ее файл и откройте в PowerPoint на своем компьютере.
Текстовое содержимое слайдов:

Двумерные массивы План:1. Двумерные массивы: понятие и описание.2. Ввод-вывод двумерного массива.2.1. Инициализация массива.2.2. Вывод массива на экран.3. Обработка матриц. 1. Двумерные массивы: понятие и описание const n = 4; m = 3;type mas = array [1 .. n] of integer; mas2 = array [1 .. m] of mas;Более компактно:type mas2 = array [1 .. m, 1 .. n] of integer;Здесь описан тип массива, состоящего из m массивов, каждый из которых содержит n целых чисел. Иными словами, это матрица из m строк и n столбцов. или сокращенно . Общий вид двумерного массива:<имя массива>: ARRAY [m1..m2, n1..n2] OF <тип элементов>;m1..m2 – диапазон значений индекса i, определяющий число строк;n1..n2 – диапазон значений индекса j, определяющий число столбцов. 2. Ввод-вывод двумерного массива const n = 10; m = 5; type mas2 = array[1..m, 1..n] of real; var X,Y: mas2; i, j, k: integer;2.1. Инициализация массива: присвоение каждому элементу начального значенияa). Присвоение значений элементам массива до начала выполнения программы:При инициализации двумерных массивов каждая строка заключается в дополнительную пару круглых скобок: const a = ((2,3,1,0), (1,9,1,3), (3,5,7,0)); б) обнуление элементов массива:procedure nul (var A: mas);begin for i := 1 to m do for j := 1 to n do a[i, j] := 0;end; 2.1. Инициализация массива: присвоение каждому элементу начального значения в) ввод значений элементов массива с клавиатуры:procedure vvod­_klaviatura (var A: mas); {A – параметр-переменная, используется только в процедуре, передается в основную программу,beginв основной программе – это переменная Х} for i := 1 to m do for j := 1 to n do begin write(‘Введите элемент: a[‘, i, ‘,‘, j, ‘]‘); readln(a[i, j]); end;end;beginwriteln (‘Введите элементы массива: ‘);vvod­_klaviatura (X); {вызов процедуры}…end. 2.1. Инициализация массива: присвоение каждому элементу начального значения г) формирование целочисленного массива с помощью генерации последовательности случайных чисел – ГПСЧ (в массиве целые числа от 1 до X):const p = 50;procedure vvod_sluchainie_chisla1 (var A, B: mas); {A и B – параметры- переменные, используются только в процедуре, передаются в основную программу,begin в основной программе – это переменные Х и Y} for i := 1 to m dofor j := 1 to n do a[i, j] := random(p) + 1; {элементы массива целые числа от 1 до 51} for i := 1 to m do for j := 1 to n do b[i, j] := random(p) – 25; {элементы массива end; целые числа от – 25 до 25}beginrandomize;vvod_sluchainie_chisla1 (X,Y); {вызов процедуры}…end. 2.1. Инициализация массива: присвоение каждому элементу начального значения д) формирование массива действительных чисел с помощью генерации последовательности случайных чисел – ГПСЧ (в массиве действительные числа от 1 до X):const p = 50;procedure vvod_sluchainie_chisla2 (A, B: mas); {A и B – параметры- переменные, используются только в процедуре, передаются в основную программу,begin в основной программе – это переменные Х и Y} for i := 1 to m dofor j := 1 to n do a[i, j] := random; {элементы массива действительные числа от 0 до 1} for i := 1 to m dofor j := 1 to n do b[i, j] := random*p – 25; {элементы массива действительные числа от – 25 до 25}end;beginrandomize;vvod_sluchainie_chisla2 (X,Y); {вызов процедуры}…end. 2.2. Вывод массива на экран procedure vivod (A: mas); {A – параметр-значение, используется только в процедуре, begin в основной программе – это переменная Х} for i := 1 to m do begin for j := 1 to n do write (a[i, j], ‘ ‘); writeln; end;end;beginvivod (X);{вызов процедуры}…end. 3.1. Реализация алгоритмов при обработке всех элементов матрицы Задача 1. Дана матрица вещественных чисел . Вычислить значение , где P1 и P2 – произведения положительных и отрицательных элементов матрицы соответственно.Program proizveenie_polog_i_otric_elementov;const p = 49; m = 4; n = 6: type mas2 = array [1..m, 1..n] of real; var А: mas2; i, j: integer; P1, P2, Z: real; {X – параметр-переменная}procedure vvod-vivod_sluchainie_chisla (var X: mas2); begin writeln(‘Матрица A:’); for i := 1 to m dobegin for j := 1 to n do begin x[i, j] := random(p) + 1; {элементы массива write (x[i, j], ‘ ‘); целые числа от 1 до 50} end; writeln; end; end; 3.1. Реализация алгоритмов при обработке всех элементов матрицы procedure obrabotka (X: mas2); {X – параметр-значение}begin P1 := 1; P2 := 1;for i := 1 to m do for j :=1 to n do begin if x[i, j] > 0 then P1 := P1  x[i, j]; if x[i, j] < 0 then P2 := P2  x[i, j]; end;Z := P1/abs(P2); writeln (‘Z = ’, Z:10:2);end; beginrandomize;vvod-vivod_sluchainie_chisla (A);obrabotka (A);end. 3.2. Реализация алгоритмов внутри каждой строки или каждого столбца матрицы Задача 2. В матрице вещественных чисел первый элемент каждой строки поменять местами с минимальным элементом этой строки. Вывести матрицу Х после обмена в виде матрицы А.program obmen_elementov;const p = 8; m = 3; n = 6:type mas2 = array [1..m, 1..n] of real;var X, А: mas2; i, j, jmin: integer; min: real; procedure vvod_sluchainie_chisla (var Y:mas2); {Y – параметр-переменная}beginfor i := 1 to m do for j := 1 to n do y[i] := random(p)+1; {элементы массива end; целые числа от 1 до 9}procedure vivod (Y:mas2); {Y – параметр-значение}beginfor i := 1 to m dobegin for j := 1 to n do write (y[i], ‘ ‘); writeln; end; end; 3.2. Реализация алгоритмов внутри каждой строки или каждого столбца матрицы procedure obrabotka (Y: mas2, var B: mas2); {B – параметр-переменная,begin Y – параметр-значение} Y:=B; for i := 1 to m do begin min := +1E6; for j := 1 to n do if y[i, j] < min then begin min := y[i, j]; jmin := j; end; b[i, jmin] := b[i, 1]; b[i, 1] := min; {B – новый массив} end;end; Begin randomize;vvod_sluchainie_chisla (X); writeln (‘Матрица X:’); vivod (X); {вывод первоначальной матрицы Х}obrabotka (X, A); vivod (A); {вывод обработанной матрицы Х в виде матрицы А}end. 3.3. Реализация алгоритмов при обращениико всем элементам строк или столбцов Задача 3. В массиве m*n поменять местами 2 столбца с заданными номерами.program pomeniat_ctolbci;type mas2 = array [1..100, 1..100] of integer; mas1 = array [1..100] of integer;var A: mas2; i, j, n, k, d, m: integer;procedure vvod (var C: mas2);begin for i = 1 to m dofor j := 1 to n do c[i, j] := random(10);end;procedure vivod (C: mas2);begin for i := 1 to m dobeginfor j := 1 to n dobegin write(c[i, j]:3); end; writeln; end;end; 3.3. Реализация алгоритмов при обращениико всем элементам строк или столбцов procedure obrabotka (var C:mas2); var B: mas1; begin for i := 1 to m do begin for j := 1 to n do begin if j = k then begin B[i] := C[i, k]; C[i, k] := C[i, d]; end; if j = d then C[i, d] := B[i]; end; end; end; 3.3. Реализация алгоритмов при обращениико всем элементам строк или столбцов beginrandomize;write (‘Введите количество строк массива m = ‘); readln(m);write (‘Введите количество столбцов массива n = ‘); readln(n);writeln (‘Массив А: ‘); vvod(A); vivod(A);write (‘Введите номера столбцов, которые необходимо поменять местами: ‘);readln (k, d); obrabotka (A);writeln (‘Массив А после перестановки столбцов: ‘); vivod (A);end.Результаты выполнения программы:Введите количество строк массива m = 2Введите количество столбцов массива n = 3Массив А: 1 8 2 4 2 6Введите номера столбцов, которые необходимо поменять местами: 1 3Массив А после перестановки столбцов: 2 8 1 6 2 4

Приложенные файлы

  • ppt 2massivPascal
    Презентация
    Размер файла: 77 kB Загрузок: 1