Часть 1 Двумерный массив. Матрицы

Скачать презентацию Часть 1  Двумерный массив. Матрицы Скачать презентацию Часть 1 Двумерный массив. Матрицы

Двумерные массивы.ppt

  • Количество слайдов: 31

>Часть 1 Часть 1

>Двумерный массив. Матрицы       1  В математике таблицы Двумерный массив. Матрицы 1 В математике таблицы чисел, состоящие из строк и столбцов называются матрицами и записываются в круглых скобках.

>Двумерный массив. Применение.       2  Использование двумерных массивов Двумерный массив. Применение. 2 Использование двумерных массивов для построения поверхностей.

>Двумерный массив. Определение.       3 Массив — это пронумерованная Двумерный массив. Определение. 3 Массив — это пронумерованная последовательность величин одинакового типа, обозначаемая одним именем. Элементы массива располагаются в последовательных ячейках памяти, обозначаются именем массива и индексом. Каждое из значений, составляющих массив, называется его компонентой (или элементом массива). Способ организации данных, при котором каждый элемент определяется номером строки и номером столбца, на пересечении которых он расположен, называется двумерным массивом

>Двумерный массив. Определение       4    Двумерный массив. Определение 4 В математике: 1 2 3 4 5 6 Ai; j 1 7 4 2 7 5 4 В Pascal: 4 1 3 8 9 9 A[i, j] 2 3 1 5 0 6 0 0 A[2, 4] A[1, 2] A[3, 5]

>Двумерный массив. Описание    5  Самый простой способ описания массива Двумерный массив. Описание 5 Самый простой способ описания массива a : array [1. . 10, 1. . 20] of real; Количество Имя Описание как массивов: Тип строк массива данных в Количество массиве a: array [1. . 10] of array [1. . 20] of real; столбцов Каждый элемент которого в свою Одномерный очередь является массив одномерным массивом

>Двумерный массив. Описание       6 Количество строк и столбцов Двумерный массив. Описание 6 Количество строк и столбцов через константу. Const В разделе констант m=10; n =20; указываем число строк и столбцов Var a : array [1. . m, 1. . n] of integer; Определяем пользовательский тип , двумерный Определением нового типа данных. массив type t=array[1. . m, 1. . n] of integer; var a : t;

>Двумерный массив. Описание       7    Массив Двумерный массив. Описание 7 Массив констант. const a: array[1. . 3, 1. . 5] of integer = ((3, -2, 1, 4, 3), (-5, -9, 0, 3, 7), Непосредственно в (-1, 2, 1, -4, 0)); программе указываем значения элементов массива.

>Двумерный массив. Заполнение       8   Цикл отвечающий Двумерный массив. Заполнение 8 Цикл отвечающий за перебор строк. Берем первую, вторую и так далее Заполнение массива с клавиатуры: строки For i : = 1 to 3 do begin For j : = 1 to 4 do begin write('A[ ', i, ', ', j, ']= '); readln(a[i, j]) end; Цикл отвечающий за end; перебор ячеек в каждой строке.

>Двумерный массив. Заполнение       9  Блок-схема заполнения с Двумерный массив. Заполнение 9 Блок-схема заполнения с клавиатуры: Цикл отвечающий за перебор строк. i , 1, N (Внешний цикл) j , 1, N Ввод a i , j Цикл отвечающий за перебор ячеек в каждой строке. (Внутренний цикл)

>Двумерный массив. Заполнение       10 Заполнение массива случайными числами: Двумерный массив. Заполнение 10 Заполнение массива случайными числами: For i : = 1 to 3 do begin For j : = 1 to 4 do begin a[i, j] : = random(21) - 10; write(a[i, j]: 6); end; Когда i-я строка закончилась, Write без LN выводит writeln; пишем пустой элементы массива в Write. LN для end; строку перехода на новую строку

>Двумерный массив. Заполнение       11    Двумерный массив. Заполнение 11 i , 1, N Цикл отвечающий за перебор строк. (Внешний цикл) j , 1, N a i , j= случайное[-10; 10] Вывод a i , j Цикл отвечающий за перебор ячеек в каждой строке. (Внутренний цикл)

>Двумерный массив. Заполнение       12 Заполнение массива по правилу: Двумерный массив. Заполнение 12 Заполнение массива по правилу: i. Clr. Scr; For. Заполнить3 doпроизвольный : = 1 to begin массив Write('ВВеди (N<10) begin N = '); Readln(n); размером N j x N to 4 do по следующему For : = 1 правилу: i: =1 to j] do begin For n a[i, : =ФОРМУЛА; 11111 j: =1 to n do begin For 22222 write(a[i, j]: 6); a[i, j]: =i; Значение 33333 end; write(a[i, j]: 4); каждой ячейке элемента в 44444 writeln; end; строки равно номеру строки. 55555 end; writeln; end;

>Двумерный массив. Заполнение       13  Clr. Scr; Двумерный массив. Заполнение 13 Clr. Scr; 1 2 3 4 Главная диагональ: 1 Write('ВВеди N = '); Readln(n); a 11 a 14 I=J 2 For i: =1 ato n do begin a 22 23 For a 32 a 33 n do begin j: =1 to 3 Побочная диагональ: 4 a 41 if 44 = n+1) then a[i, j]: =1 a (i+j I+J=N+1 else a[i, j]: =0; Заполнить произвольный массив размером N x N (N<10) write(a[i, j]); правилу: по следующему Если побочная end; 00001 диагональ то заполнить ячейку 1 writeln; 00010 во всех остальных 00100 случаях 0 end; 01000 10000

>Двумерный массив. Заполнение       14    Двумерный массив. Заполнение 14 Ввод N i , 1, N j , 1, N Фрагмент Нет Да блок-схемы i+j=N+1 задачи заполнения a i , j= 0 a i , j= 1 побочной диагонали единицами Вывод a i , j

>Двумерный массив. Заполнение       15   1 Двумерный массив. Заполнение 15 1 2 3 4 5 1 a 11 Удовлетворяет 2 3 a 22 неравенству 4 5 a 33 a 44 i < j a 55 Удовлетворяет неравенству i > j

>Двумерный массив. Заполнение       16    Двумерный массив. Заполнение 16 1 2 3 4 5 a 15 1 2 Удовлетворяет a 24 3 4 неравенству a 33 5 a 42 i+jn+1

>Двумерный массив. Заполнение       17    Двумерный массив. Заполнение 17 Системы неравенств (i+jn+1) 2 And (i>j) 3 a 22 a 24 And (in+1) And (i>j)

>Двумерный массив. Заполнение       18 Заполнить произвольный массив размером Двумерный массив. Заполнение 18 Заполнить произвольный массив размером N x N (N<10) по Write('ВВеди N = '); Readln(n); следующему правилу: 00001 For i: =1 to n do begin 00011 For j: =1 to n do begin 00111 if (i+j>=n+1) and (i<=j) then a[i, j]: =1 00011 00001 else a[i, j]: =0; write(a[i, j]: 2); end; Это пересечение двух Проверяем условие множеств. Элементы принадлежности writeln; лежащие на и ниже данному множеству побочной диагонали и end; элементы лежащие на и выше главной диагонали

>Двумерный массив. Сумма элементов      19  Второй. Один или Двумерный массив. Сумма элементов 19 Второй. Один или два прохода по массиву? способ. Два прохода по массиву Первый способ. Один проход по массиву Заполнить двумерный массив N x N случайными числами из Write(' ВВеди N = '); Readln(n); Clr. Scr; [-10 ; 10] и найти сумму элементов массива интервала Первый проход. s: =0; Write('ВВеди NЗамечание. Заполняем массив и = '); Readln(n); выводим его на лежащих на главной диагонали. For i: =1 to n do begin s: =0; Заполняем случайными экран For j: =1 to nнужно что то сделать только Если do begin числами и выводим на For i: =1 с главной диагональю, экран to n do begin a[i, j]: =random(20)-10; то можно обойтись begin For j: =1 to n do без вложенных циклов write(a[i, j]: 4); a[i, j]: =random(20)-10; For i: =1 to n do s: =s+ a[i, i]; end; writeln; write(a[i, j]: 4); end; if (i=j) then s: =s+ a[i, j]; Второй проход. Находим сумму. For i: =1 to n do end; For j: =1 towriteln; n do И сразу же находим сумму элементов end; if (i=j) then s: =s+ a[i, j]; лежащих на главной writeln('Сумма элементов =', s: 5); диагонали

>Двумерный массив. Сумма элементов      20    Двумерный массив. Сумма элементов 20 Ввод N Нахождение суммы элементов на главной S = 0 диагонали за один проход по массиву i , 1, N j , 1, N a i , j= случайное[-10; 10] Вывод a i , j Да i =j S =S + a i , j Нет Вывод S

>Двумерный массив. Сумма элементов      21    Нахождение Двумерный массив. Сумма элементов 21 Нахождение суммы элементов на Ввод N главной диагонали за два прохода S = 0 1 i , 1, N j , 1, N a i , j= Нет i =j случайное[-10; 10] Да Вывод a i , j S =S + a i , j 1 Вывод S

>Двумерный массив. Сумма элементов      22    Нахождение Двумерный массив. Сумма элементов 22 Нахождение суммы элементов на главной диагонали за два Ввод N прохода (в случае когда речь идет только о главной диагонали и S = 0 остальной массив не нужен) i , 1, N j , 1, N i , 1, N a i , j= случайное[-10; 10] S =S + a i , i Вывод a i , j 1 Вывод S

>Двумерный массив. Минимальный элемент      23  Один или два Двумерный массив. Минимальный элемент 23 Один или два прохода по массиву? Рассуждение второе. Заполнить двумерный массив N x N случайными числами из интервала [-10 ; 10] и найти минимальный элемент лежащий на главной диагонали.

>Двумерный массив. Минимальный элемент      24 Стандартный способ без анализа Двумерный массив. Минимальный элемент 24 Стандартный способ без анализа задачи Write('ВВеди N = '); Readln(n); Заполняем массив Замечание. случайными числами For i: =1 to n do begin For j: =1 to n do begin В данном случае можно не бегать по всему Если встречается a[i, j]: =random(21)-10; главной массиву а пройти толькоэлемент меньше m, и по он лежит на главной write(a[i, j]: 4); вложенных циклов. диагонали, обойдясь без диагонали, то он end; становится минимальным Writeln; m: =a[1, 1]; Предполагаем, что end; минимальный For i: =2 to n do элемент стоит в m: =a[1, 1]; левом верхнем углу if (a[i, i] Двумерный массив. Максимальный элемент в строке 27 Write('ВВеди N = '); Readln(n); Перебираем строки For i: =1 to n do в один проход, Решение begin Предполагаем, что Заполняем элемент max: =-10; самое большое число массива и выводим с анализом задачи его на экран - 10, левая граница For j: =1 to n do begin исходного интервала. a[i, j]: =random(21)-10; write(a[i, j]: 4); if (a[i, j]>max) then max: = a[i, j]; end; Если в строке write(' MAx = ', max: 5); встречается элемент больше writeln; Выводим наибольший максимального, то он элемент в строке end; становится максимальным

>Двумерный массив. Максимальный элемент в строке    28    Ввод Двумерный массив. Максимальный элемент в строке 28 Ввод N Нахождение максимального i , 1, N элемента в каждой строке в один Мах = - 10 проход j , 1, N a i , j= случайное[-10; 10] Вывод a i , j Да a i , j > Max = a i , j Нет Вывод Max Конец

>Двумерный массив. Максимальный элемент в строке       29 Двумерный массив. Максимальный элемент в строке 29 Предполагаем, что Clr. Scr; For i: =1 to n do begin Перебираем строки наибольший элемент в Стандартным способом, Write(‘Введи N = '); Readln(n); max: =a[i, 1]; каждой строке стоит на первом месте первый проход – заполнение, For i: =1 to n do begin For j: =2 to n do if (a[i, j]>max) then For j: =1 второй проход – поиск a[i, j]; to n do begin max: = максимального в строках a[i, j]: =random(21)-10; writeln('В ', i, ' строке max = ', max: 5); end; Заполняем массив и write(a[i, j]: 4); Идем по строке и если выводим его на экран end; находим элемент Вывод наибольшего больший чем writeln; максимальный, то он элемента в строке становится end; максимальным

>Двумерный массив. Максимальный элемент в строке    30   Начало Двумерный массив. Максимальный элемент в строке 30 Начало 1 Ввод N i , 1, N Мах = a i , 1 j , 1, N j , 2, N a i , j= Нет случайное[-10; 10] a i , j > Max Да Вывод a i , j Max = a i , j 1 Нахождение Вывод Max максимального элемента Конец в каждой строке в два прохода