массивы


The Presentation inside:

Slide 0

массивы


Slide 1

цели: освоить теоретические знания о массивах и научиться: организовывать данные в виде таблиц; обосновывать выбор типа элемента массива; описывать табличные данные; писать и отлаживать программы, обрабатывающие массивы в среде Turbo Pascal.


Slide 2

Массив – это упорядоченная совокупность однотипных данных, обозначенных одним именем.


Slide 3

Можно ли описать массив на языке Паскаль, если неизвестно точное количество его элементов? Можно ли описать на языке Паскаль массив, если неизвестны точные значения элементов массива, но известен их физический смысл и/или диапазон значений?


Slide 4

Одномерные массивы


Slide 5

1, 2 …5 — номер элемента - индекс. А — имя массива Значения Индексы А[3]=? Имя массива Индекс Значение 1 11 9 7 5 9


Slide 6

Описание массива <Имя> : array[<первый_элем>..<последн_элем>] of <Тип>; Например, var Mas : array[1..5] of Real; Назовите имя массива? Назовите зарезервированное слово для объявления массива? Сколько элементов в данном массиве?


Slide 7

Пример: var a: array[1..100] of integer; b: array[1..100] of integer; c: array[1..100] of integer; или более кратко (компактно): var a, b, c: array[1..100] of integer;


Slide 8

Заполнение массива с клавиатуры; через датчик случайных чисел; через оператор присваивания (по формуле)


Slide 9

Способ 1 Ввод: For i:=1 to n do readln(a[i]); Вывод: For i:=1 to n do writeln(a[i]);


Slide 10

Способ 2 Через датчик или генератор случайных чисел RANDOM(х). Randomize; For i:=1 to n do а[i]:=random(х);


Slide 11

Если требуется, чтобы значения элементов массива выбирались из определенного интервала [a,b], то a+Random(b-a+1);


Slide 12

Способ 3 По формуле: For i:=1 to n do а[i]:=i*3;


Slide 13

Задача. Сформировать массив, содержащий n натуральных (целых) чисел a[i], пользуясь для ввода данных клавиатурой, и выдать полученный массив на экран дисплея. program mas01; uses crt; var n, i: integer; a: array[1..100] of integer; begin clrscr; write('Введи n='); readln(n); for i:=1 to n do begin write('Введи элемент массива 'a[', i, ']='); readln(a[i]); end; for i:=1 to n do write('a[', i, ']=', a[i]); readln end.


Slide 14

Задача. Пользуясь случайными числами, сформировать два массива целых чисел a[i] и b[i], Получить третий массив c[i]=a[i] + b[i]. program massiv01; uses crt; var n, i: integer; a, b, c: array[1..100] of integer; begin clrscr; write('Введи n='); readln(n); randomize; for i:=1 to n do begin a[i]:=random(125); b[i]:=random(184); c[i]:=a[i] + b[i]; writeln('a[', i, ']=', a[i], ' b[', i, ']=', b[i], ' c[', i, ']=', c[i]); end; readln end.


Slide 15

Задача. В некотором множестве, состоящем из n учащихся, известны данные о росте каждого ученика. Найти самого высокого и самого низкого из учеников и колебание роста между ними. Введем следующие обозначения: n - количество учеников i - индекс или порядковый номер ученика a[i] - массив, содержащий данные о росте каждого ученика. min - ячейка для ответа. Должна содержать рост самого низкого ученика max - ячейка для ответа. Должна содержать рост самого высокого ученика r - колебание в росте самого низкого и самого высокого учеников


Slide 16

При поиске минимального и максимального роста учеников используется алгоритм сравнения Вначале первое число из массива ростов учащихся a[1] заносится в ячейки для ответа, то есть в min и max, и таким образом, a[1] принимается за минимальный и максимальный рост учеников. Далее последующие числа из массива ростов сравниваются со значениями min и max, и как только находится меньшее, чем min число, оно немедленно заносится в min вместо находившегося там числа. Аналогично и с максимальным ростом. Как только встречается в массиве ростов число, большее, чем число, находящееся в max, большее число заносится в max вместо прежнего числа. Так происходит до тех пор, пока не будет пересмотрен весь массив ростов учащихся. В результате будет найден минимальный и максимальный рост учеников и соотствтствующее колебание минимального роста по отношению к максимальному.


Slide 17

program rostmas1; uses crt; var n, i, min, max, r: integer; a: array[1..100] of integer; begin clrscr; write('Введи n='); readln(n); for i:=1 to n do begin write('Введите рост ученика='); readln(a[i]); end; min:=a[1]; max:=a[1]; for i:=2 to n do begin if a[i]<min then min:=a[i]; if a[i]>max then max:=a[i]; end; writeln('min=', min, ' max=', max); r:=max - min; writrln('Колебание роста=', r); readln end.


Slide 18

Нахождение суммы элементов массива S:=0; FOR I:=1 TO N DO S:=S + A[I];


Slide 19

Нахождение произведения элементов массива P:=1; FOR I:=1 TO N DO P:=P * A[I];


Slide 20

Найти максимальный элемент массива и сообщить его порядковый номер MAX:=A[1]; x:=0; FOR I:=2 TO N DO IF A[I] > MAX THEN Begin MAX:=A[I]; x:=I; END;


Slide 21

1. Написать программу, которая формирует случайным образом массив из N целых чисел, лежащих в диапазоне от 1 до 5, после чего на экран выводится сам массив и номера элементов, совпадающих с первым элементом. Протестировать программу на трёх различных тестах. 2. Написать программу, которая вводит массив из N целых чисел и выводит на экран элементы, кратные числу K. Протестировать программу на следующих исходных данных: а) k=3 Массив: 2 6 -9 4 5 12 -15 б) k=4 Массив: 9 0 8 124 -16 11 19 3. Написать программу, которая вводит массив из N вещественных чисел, а затем заменяет в нём все элементы, превышающие данное число Z, этим числом. Вывести на экран полученный массив и количество замен. Протестировать программу на следующих исходных данных: а) Z=10 Массив: 1,2 2,6 3 -4,5 11  10,2 3,2 87 -15 б) Z=-2 Массив: 0 -3,1 11 -7,9 -2,1 -1,9 4 4. При поступлении в ВУЗ абитуриенты, получившие «двойку» на первом экзамене, ко второму не допускаются. В массиве A[N] записаны оценки экзаменующихся, полученных на первом экзамене. Подсчитать, сколько человек не допущено ко второму экзамену.  


Slide 22

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


Slide 23

В математике квадратные и прямоугольные таблицы часто называют матрицами Первый индекс – номер строки Второй индекс – номер столбца M- строк N столбцов Матрица имеет размер М*N


Slide 24

Описание массива <имя массива>:ARRAY[<m1>..<m2>,<n1>..<n2>] OF <тип>; Например, a: array [1..3, 1..6] of integer; Количество строк Количество столбцов Количество строк Количество столбцов Назовите имя массива? Назовите зарезервированное слово для объявления массива? Сколько элементов в данном массиве?


Slide 25

Запись: <имя массива>[m, n] указывает на элемент, стоящий на пересечении m-ой строки и n-го столбца Например, а [2,3] указывает на элемент во 2-ой строке и 3-ем столбце VAR A:ARRAY[1..3,1..6] OF REAL;


Slide 26

При решении задач с использованием двумерных массивов организуются вложенные циклы: For i:=1 to m do begin изменяется номер строки For j:=1 to n do begin изменяется номер столбца Запись массива: а[i , j]


Slide 27

Опишите таблицу А, состоящую из 4 строк и 5 столбцов, заполните её случайными числами в интервале от 1 до 100. VAR A: ARRAY[1..4,1..5] OF INTEGER; RANDOMIZE; FOR I:=1 TO 4 DO FOR J:=1 TO 5 DO A[I,J]:=RANDOM(100);


Slide 28

Опишите массив , значения элементов которого вычисляются в следующем фрагменте программы: FOR I:=1 TO 20 DO begin x:=x+1; FOR J:=1 TO 5 DO A[I,J]:= A[I,J] + x; End; VAR A:ARRAY[1..20,1..5] OF REAL;


Slide 29

Нахождение суммы элементов массива


Slide 30

Найти максимальный элемент массива и сообщить его порядковый номер MAX:=A[1,1]; x:=0; FOR i:=2 TO m DO FOR j:=1 TO n DO IF A[I,j] > MAX THEN Begin MAX:=A[I,j]; x:=i; END;


Slide 31

Хозяйка ходит в магазин каждый день утром и вечером в течении недели. Она записывает свои расходы в такую табличку: Ввести все элементы массива и определить траты хозяйки утром и вечером в течении недели.


×

HTML:





Ссылка: