Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 9 лет назад пользователемРимма Перская
1 Часть 1
2 В математике таблицы чисел, состоящие из строк и столбцов называются матрицами и записываются в круглых скобках. Двумерный массив. Матрицы 1
3 Двумерный массив. Применение. 2 Использование двумерных массивов для построения поверхностей.
4 Двумерный массив. Определение. 3 Массив это пронумерованная последовательность величин одинакового типа, обозначаемая одним именем. Элементы массива располагаются в последовательных ячейках памяти, обозначаются именем массива и индексом. Каждое из значений, составляющих массив, называется его компонентой (или элементом массива). Способ организации данных, при котором каждый элемент определяется номером строки и номером столбца, на пересечении которых он расположен, называется двумерным массивом
5 Двумерный массив. Определение В математике : В Pascal: A i;j A[i,j] A[2,4] A[1,2] A[3,5]
6 Двумерный массив. Описание 5 Самый простой способ описания массива a : array [1..10, 1..20] of real; Имя массива Количество строк Количество столбцов Тип данных в массиве a: array [1..10] of array [1.. 20] of real; Описание как массив массивов: Одномерный массив Каждый элемент которого в свою очередь является одномерным массивом
7 Двумерный массив. Описание 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; Определением нового типа данных. Определяем пользовательский тип, двумерный массив
8 Двумерный массив. Описание 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)); Массив констант. Непосредственно в программе указываем значения элементов массива.
9 For i := 1 to 3 do begin For j := 1 to 4 do begin write('A[ ', i, ', ',j, ']= '); readln(a[i, j]) end; Двумерный массив. Заполнение 8 Заполнение массива с клавиатуры: Цикл отвечающий за перебор строк. Берем первую, вторую и так далее строки Цикл отвечающий за перебор ячеек в каждой строке. end;
10 Двумерный массив. Заполнение 9 j, 1, N Ввод a i, j i, 1, N Блок-схема заполнения с клавиатуры: Цикл отвечающий за перебор строк. (Внешний цикл) Цикл отвечающий за перебор ячеек в каждой строке. (Внутренний цикл)
11 Двумерный массив. Заполнение 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; writeln; end; Write без LN выводит элементы массива в строку Когда i-я строка закончилась, пишем пустой WriteLN для перехода на новую строку
12 Двумерный массив. Заполнение 11 j, 1, N Вывод a i, j i, 1, N a i, j = случайное[-10;10] Цикл отвечающий за перебор строк. (Внешний цикл) Цикл отвечающий за перебор ячеек в каждой строке. (Внутренний цикл)
13 Двумерный массив. Заполнение 12 Заполнение массива по правилу: For i := 1 to 3 do begin For j := 1 to 4 do begin a[i, j] :=ФОРМУЛА; write(a[i, j]:6); end; writeln; end; Заполнить произвольный массив размером N x N (N<10) по следующему правилу: ClrScr; Write('ВВеди N = ');Readln(n); For i:=1 to n do begin For j:=1 to n do begin a[i,j]:=i; write(a[i,j]:4); end; writeln; end; Значение элемента в каждой ячейке строки равно номеру строки.
14 Двумерный массив. Заполнение 13 a 11 a 22 a 23 a 32 a 33 a 14 a 41 a Главная диагональ: I=J Побочная диагональ: I+J=N+1 Заполнить произвольный массив размером N x N (N<10) по следующему правилу: ClrScr; Write('ВВеди N = ');Readln(n); For i:=1 to n do begin For j:=1 to n do begin if (i+j = n+1) then a[i,j]:=1 else a[i,j]:=0; write(a[i,j]); end; writeln; end; Если побочная диагональ то заполнить ячейку 1 во всех остальных случаях 0
15 Двумерный массив. Заполнение 14 Фрагмент блок-схемы задачи заполнения побочной диагонали единицами j, 1, N Вывод a i, j i, 1, N a i, j = 0 Ввод N i+j=N+1 a i, j = 1 Да Нет
16 Двумерный массив. Заполнение 15 a 11 a 22 a 33 a 44 a 55 Удовлетворяет неравенству i < j Удовлетворяет неравенству i > j
17
Двумерный массив. Заполнение 16 a 15 a 24 a 33 a 42 a51a51a51a51 Удовлетворяет неравенству i+j
18
Двумерный массив. Заполнение 17 a 11 a 22 a 33 a 44 a a 42 a51a51a51a51 a 24 a 15 (i+j
19 Двумерный массив. Заполнение 18 Заполнить произвольный массив размером N x N (N<10) по следующему правилу: Это пересечение двух множеств. Элементы лежащие на и ниже побочной диагонали и элементы лежащие на и выше главной диагонали Write('ВВеди N = '); Readln(n); For i:=1 to n do begin For j:=1 to n do begin if (i+j>=n+1) and (i<=j) then a[i,j]:=1 else a[i,j]:=0; write(a[i,j]:2); end; writeln; end; Проверяем условие принадлежности данному множеству
20 Двумерный массив. Сумма элементов 19 Заполнить двумерный массив N x N случайными числами из интервала [-10 ; 10] и найти сумму элементов массива лежащих на главной диагонали. Один или два прохода по массиву? Первый способ. Один проход по массиву ClrScr; Write('ВВеди N = ');Readln(n); s:=0; For i:=1 to n do begin For j:=1 to n do begin a[i,j]:=random(20)-10; write(a[i,j]:4); if (i=j) then s:=s+ a[i,j]; end; writeln; end; writeln('Сумма элементов =',s:5); Заполняем случайными числами и выводим на экран И сразу же находим сумму элементов лежащих на главной диагонали Второй способ. Два прохода по массиву Write(' ВВеди N = ');Readln(n); s:=0; For i:=1 to n do begin For j:=1 to n do begin a[i,j]:=random(20)-10; write(a[i,j]:4); end; writeln; end; For i:=1 to n do For j:=1 to n do if (i=j) then s:=s+ a[i,j]; writeln('Сумма элементов =',s:5); Первый проход. Заполняем массив и выводим его на экран Второй проход. Находим сумму. Замечание. Если нужно что то сделать только с главной диагональю, то можно обойтись без вложенных циклов For i:=1 to n do s:=s+ a[i,i];
21 Двумерный массив. Сумма элементов 20 j, 1, N Вывод a i, j i, 1, N a i, j = случайное[-10;10] Ввод N S = 0 i = j S =S + a i, j Вывод S Да Нет Нахождение суммы элементов на главной диагонали за один проход по массиву
22 Двумерный массив. Сумма элементов 21 j, 1, N Вывод a i, j i, 1, N a i, j = случайное[-10;10] Ввод N S = j, 1, N i, 1, N i = j S =S + a i, j Вывод S Да Нет Нахождение суммы элементов на главной диагонали за два прохода
23 Двумерный массив. Сумма элементов 22 j, 1, N Вывод a i, j i, 1, N a i, j = случайное[-10;10] Ввод N S = 0 1 i, 1, N S =S + a i, i Вывод S Нахождение суммы элементов на главной диагонали за два прохода (в случае когда речь идет только о главной диагонали и остальной массив не нужен)
24 Двумерный массив. Минимальный элемент 23 Один или два прохода по массиву? Рассуждение второе. Заполнить двумерный массив N x N случайными числами из интервала [-10 ; 10] и найти минимальный элемент лежащий на главной диагонали.
25
Двумерный массив. Минимальный элемент 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; write(a[i,j]:4); end; Writeln; end; m:=a[1,1]; For i:=1 to n do For j:=1 to n do if (a[i,j]
26
Двумерный массив. Минимальный элемент 25 Если немного по рассуждать, можно увидеть, что самое «маленькое» число, которое может выдать генератор случайных чисел это 10. Все остальные числа будут меньше его. Т.к. в условии задачи нам точно задан интервал [-10 ; 10]. С анализом исходных данных задачи Write('ВВеди N = ');Readln(n); m:=10; For i:=1 to n do begin For j:=1 to n do begin a[i,j]:=random(21)-10; write(a[i,j]:4); if (a[i,j]
27 Двумерный массив. Максимальный элемент в строке 26 Заполнить двумерный массив N x N случайными числами из интервала [-10 ; 10] и найти максимальный элемент в каждой строке.
28 Двумерный массив. Максимальный элемент в строке 27 Write('ВВеди N = ');Readln(n); For i:=1 to n do begin max:=-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; Решение в один проход, с анализом задачи Предполагаем, что самое большое число - 10, левая граница исходного интервала. Перебираем строки Заполняем элемент массива и выводим его на экран Если в строке встречается элемент больше максимального, то он становится максимальным Выводим наибольший элемент в строке
29 Двумерный массив. Максимальный элемент в строке 28 j, 1, N Вывод a i, j i, 1, N a i, j = случайное[-10;10] Ввод N Мах = - 10 a i, j > Max Max = a i, j Вывод Max Да Нет Нахождение максимального элемента в каждой строке в один проход Конец
30 Двумерный массив. Максимальный элемент в строке 29 ClrScr; Write(Введи N = ');Readln(n); For i:=1 to n do begin For j:=1 to n do begin a[i,j]:=random(21)-10; write(a[i,j]:4); end; writeln; end; Заполняем массив и выводим его на экран For i:=1 to n do begin max:=a[i,1]; For j:=2 to n do if (a[i,j]>max) then max:= a[i,j]; writeln('В ',i,' строке max = ',max:5); end; Перебираем строки Предполагаем, что наибольший элемент в каждой строке стоит на первом месте Идем по строке и если находим элемент больший чем максимальный, то он становится максимальным Вывод наибольшего элемента в строке Стандартным способом, первый проход – заполнение, второй проход – поиск максимального в строках
31 Двумерный массив. Максимальный элемент в строке 30 j, 1, N Вывод a i, j i, 1, N a i, j = случайное[-10;10] Ввод N 1 j, 2, N i, 1, N Мах = a i, 1 a i, j > Max Max = a i, j Вывод Max Да Нет 1 Начало Конец Нахождение максимального элемента в каждой строке в два прохода
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.