1261de611a024c557c58487c1f98249b.ppt
- Количество слайдов: 16
1 Программирование на языке Паскаль Матрицы
2 Матрицы Задача: запомнить положение фигур на шахматной доске. 1 a b c 2 d e f 3 g 4 h 5 6 1 2 3 4 5 6 7 8 8 8 0 0 2 0 0 0 7 7 0 0 0 0 6 6 0 0 3 0 0 0 5 5 0 0 0 0 4 0 3 3 0 0 0 0 2 2 0 0 0 0 1 1 0 0 0 0 4 c 6 0 0 A[6, 3]
3 Матрицы Матрица – это прямоугольная таблица чисел. Матрица – это массив, в котором каждый элемент имеет два индекса (номер строки и номер столбца). столбец 3 A 1 2 3 4 5 1 1 4 7 3 6 2 2 -5 0 3 8 9 строка 2 15 10 11 12 20 ячейка A[3, 4]
4 Матрицы Объявление: const N = 3; M = 4; var A: array[1. . N, 1. . M] of integer; B: array[-3. . 0, -8. . M] of integer; Q: array['a'. . 'd', False. . True] of real; Ввод с клавиатуры: ? Если переставить циклы? j i for i: =1 to N do j: =1 M for j: =1 to M do begin i: =1 N write('A[', i, ', ', j, ']='); read ( A[i, j] ); end; A[1, 1]= A[1, 2]= A[1, 3]=. . . A[3, 4]= 25 14 14 54
5 Матрицы Заполнение случайными числами ? цикл по строкам Какой интервал? for i: =1 to N do цикл по столбцам for j: =1 to M do A[i, j] : = random(25) - 10; Вывод на экран вывод строки for i: =1 to N do begin 12 25 1 13 for j: =1 to M do write ( A[i, j]: 5 ); 156 1 12 447 writeln; 1 456 222 23 end; в той же строке перейти на новую строку ? Если переставить циклы?
Обработка всех элементов матрицы Задача: заполнить матрицу из 3 строк и 4 столбцов случайными числами и вывести ее на экран. Найти сумму элементов матрицы. program qq; const N = 3; M = 4; var A: array[1. . N, 1. . M] of integer; i, j, S: integer; begin { заполнение матрицы и вывод на экран} S : = 0; for i: =1 to N do for j: =1 to M do S : = S + A[i, j]; writeln('Сумма элементов матрицы ', S); end; 6
Создание матрицы 5 x 4, вывод ее на экран по строкам • program Massiv_2; const N = 5; { Число строк } M = 4; { Число столбцов } var Table : array [1. . N, 1. . М] of integer; { Заказываем область памяти для хранения двумерного массива из N строк и М столбцов } { Вообще говоря, нигде не определено, что первый индекс - это номер строки, а второй - это номер столбца. Так как выводом на экран занимается программист, он сам решает, как ему удобнее. Нам удобнее считать, что номер строки - первый индекс, а номер столбца - второй } i, j : integer; { Переменные для хранения индексов строки и столбца } begin { Заполнение массива датчиком случайных чисел; } randomize; for i: =1 to N do for j: =l to M do Table[i, j]: =Random(100); { Запись случайного числа в массив на место с номером строки i и номером столбца j } { Вывод матрицы на экран по строкам; } for i: =1 to N do begin for j: =1 to M do write(Table[i, j]); writeln { Переход на новую строку после вывода всех элементов строки i } end; readln end.
Найти максимальный элемент каждой строки массива и его индексы (всего массива и его индексы). • {Так как элементы могут повторяться, то договоримся, что будем запоминать только индексы первого максимального элемента. } program prim 2; uses crt; type mas=array[1. . 100, 1. . 100] of integer; var a: mas; i, j, n: integer; max, min, i 1, j 1, i 2, j 2: integer; begin clrscr; randomize; write('n='); readln(n); for i: =1 to n do begin {Так как тип массива integer, то за начальные значения возьмем. } max: =-32 768; for j: =1 to n do begin {Получаем случайные значения элементов матрицы. } a[i, j]: =random(45)-22; {Выводим элементы матрицы на экран. } write(a[i, j]: 4); {Находим максимальный элемент в каждой строке и его индексы. } if a[i, j]>max then begin max: =a[i, j]; i 1 : =i; j 1 : =j; end; {Печатаем максимальный элемент в каждой строке и его индекс. } write (' max=', max, ' строка=', i 1, ' столбец =', j 1); writeln; end; readln; end. {Для нахождения максимального элемента всего массива необходимо: - перенести начальный максимум на одну строку выше; - перенести печать максимального элемента на две строки вниз. }
• Найти сумму всех элементов двумерного массива и сумму элементов каждой строки. • program prim J; uses crt; type mas=array[1. . 100, 1. . 100] of integer; var a: mas; i, j, n, s, sl : integer; begin clrscr; randomize; write('n='); readln(n); for i: =1 to n do begin for j: =1 to n do begin {Получаем случайные значения элементов матрицы. } a[i, j]=random(45)-22; write(a[i, j]: 4); {Находим сумму элементов. } s: =s+a[i, j]; sl: =sl+a[i, j]; end; {Печатаем сумму всех элементов каждой строки и обнуляем значение суммы. } writeln('сумма строки =', s); s: =0; writeln; end; writeln('сумма всех элем. sl=', sl); readln; end. • • • • • • • var a: array [1. . 5, 1. . 8] of integer; x, y, x 1, y 1: integer; begin randomize; x 1: =1; y 1: =1; for x: =1 to 5 do begin writeln; for y: =1 to 8 do begin a[x, y]: =random(20)-10; write(a[x, y]: 3, ' '); end; writeln; for x: =1 to 5 do for y: =1 to 8 do if a[x 1, y 1]a[x, y] then begin x 1: =x; y 1: =y; end; writeln('MIN a[', x 1, ', ', y 1, ']=', a[x 1, y 1]); readln; end.
• • • • • • • var a: array [1. . 5, 1. . 8] of integer; b, c, d, x, y, x 1, y 1: integer; begin randomize; x 1: =1; y 1: =1; for x: =1 to 5 do begin writeln; for y: =1 to 8 do begin a[x, y]: =random(20)-10; write(a[x, y]: 3, ' '); end; writeln; for x: =1 to 5 do for y: =1 to 8 do if a[x 1, y 1]a[x, y] then begin x 1: =x; y 1: =y; end; writeln('MIN a[', x 1, ', ', y 1, ']=', a[x 1, y 1]); end.
Поменять местами строки с номерами К 1 и К 2. • program prim 4; uses art; type mas=array[1. . 100, 1. . 100] of integer; var a: mas; i, j, n, k 1, k 2, r: integer; begin clrscr; randomize; write('n='); readln(n); {Создаем и распечатываем двумерный массив. } for i: =1 to n do begin for j: =1 to n do begin a[i, j]: =random(45)-22; write(a[i, j]: 4); end; writeln; end; {Вводим номера строк, которые будем менять местами. } write('stroki k 1=k 2='); readln(k 1, k 2); {Меняем значения К 1 и К 2 строк между собой. } for j: =1 to n do begin r: = a[k 1, j]; a[k 1, j]: =: =a[k 2, j]; a[k 2, j]: =r; end; {Распечатаем измененный массив. } for i: =1 to n do begin for j: =1 to n do begin write(a[i, j]: 4); end; writeln; end; readln; end.
12 Задания Заполнить матрицу из 8 строк и 5 столбцов случайными числами в интервале [-10, 10] и вывести ее на экран. "4": Найти минимальный и максимальный элементы в матрице их номера. Формат вывода: Минимальный элемент A[3, 4]=-6 Максимальный элемент A[2, 2]=10 "5": Вывести на экран строку, сумма элементов которой максимальна. Формат вывода: Строка 2: 3 5 8 9 8
Операции с матрицами 13 Задача 1. Вывести на экран главную диагональ квадратной матрицы из N строк и N столбцов. A[1, 1] A[2, 2] A[3, 3] for i: =1 to N do write ( A[i, i]: 5 ); A[N, N] Задача 2. Вывести на экран вторую диагональ. A[1, N] A[2, N-1] A[N-1, 2] A[N, 1] сумма номеров строки и столбца N+1 for i: =1 to N do write ( A[i, N+1 -i ]: 5 );
14 Операции с матрицами Задача 3. Найти сумму элементов, стоящих на главной диагонали и ниже ее. ? Одиночный цикл или вложенный? строка 1: A[1, 1] строка 2: A[2, 1]+A[2, 2]. . . строка N: A[N, 1]+A[N, 2]+. . . +A[N, N] S : = 0; for i: = 1 to N do for j: = 1 to i do S : = S + A[i, j]; цикл по всем строкам складываем нужные элементы строки i
Операции с матрицами Задача 4. Перестановка строк или столбцов. В матрице из N строк и M столбцов переставить 2 -ую и 4 -ую строки. j A[2, j] 2 1 2 5 2 1 4 7 3 1 3 7 A[4, j] for j: =1 to M do begin c : = A[2, j]; A[2, j] : = A[4, j]; A[4, j] : = c; end; Задача 5. К третьему столбцу добавить шестой. for i: =1 to N do A[i, 3] : = A[i, 3] + A[i, 6]; 15
Задания 16 Заполнить матрицу из 7 строк и 7 столбцов случайными числами в интервале [-10, 10] и вывести ее на экран. Обнулить элементы, отмеченные зеленым фоном, и вывести полученную матрицу на экран. "4": "5":


