Понятие и обработка массива
Оценка 4.8

Понятие и обработка массива

Оценка 4.8
pptx
25.06.2020
Понятие и обработка массива
массивы).pptx

Понятие и обработка массива

Понятие и обработка массива

Программирование на языке Паскаль

Программирование на языке Паскаль

2

Программирование на языке Паскаль

Массивы
Основные этапы работы с массивами
Способы заполнения одномерных массивов
Вывод массива на экран
Обработка массивов
Максимальный элемент массива
Обработка одномерных массивов
Сортировка массивов
Поиск в массиве

Программирование на языке Паскаль

Программирование на языке Паскаль

3

Программирование на языке Паскаль

Тема 1. Массивы

Типы данных

Типы данных

Типы данных

В практической деятельности человека часто используются таблицы и списки

В практической деятельности человека часто используются таблицы и списки

В практической деятельности человека часто используются таблицы и списки.
Например:
Список учеников в журнале;
Список среднесуточной температуры месяца;
Таблица умножения.

Иванов
Петров
Сидоров
Кошкин
Мышкин

100
120
120
130
140
140
120
150
160
140
...
180

1

2

3

4

5

6

7

8

9

10

1

1

2

3

4

5

6

7

8

9

10

2

2

4

6

8

10

12

14

16

18

20

3

3

6

9

12

15

18

21

24

27

30

4

4

8

12

16

20

24

28

32

36

40

5

5

10

15

20

25

30

35

40

45

50

6

6

12

18

24

30

36

42

48

54

60

Элементы списков и номера строк и столбцов всегда нумеруются

Массивы Массив – это группа однотипных элементов, имеющих общее имя и расположенных в памяти рядом

Массивы Массив – это группа однотипных элементов, имеющих общее имя и расположенных в памяти рядом

6

Массивы

Массив – это группа однотипных элементов, имеющих общее имя и расположенных в памяти рядом.
Особенности:
все элементы имеют один тип
весь массив имеет одно имя
все элементы упорядочены
все элементы расположены в памяти рядом
Примеры:
список учеников в классе
квартиры в доме
школы в городе
данные о температуре воздуха за год

Массив это упорядоченный по номерам набор значений, объединенных общим типом и именем

Массив это упорядоченный по номерам набор значений, объединенных общим типом и именем

Массив

это упорядоченный по номерам набор значений, объединенных общим типом и именем

Каждое значение в массиве называется элементом. Номер элемента в списке называется индексом.

Тип элемента может быть любым (символьные или числовые), принятым в языке ПАСКАЛЬ, кроме файлового типа.
Тип элемента называется базовым типом.
Элемент массива представляется как переменная с индексом или с индексами: A[5] S[k+1] B[3,5].

Виды массивов Одномерный (содержит одну строку или один столбец)

Виды массивов Одномерный (содержит одну строку или один столбец)

Виды массивов

Одномерный
(содержит одну строку или один столбец)

Двумерный (содержит N строк,
M столбцов)

10

12

8

10

9

8

Например, температура воздуха за неделю.

1

2

4

3

9

4

16

Например, значение функции y=x2

x y

Строки нумеруются сверху вниз, столбцы слева направо.

Многомерный

В качестве иллюстрации можете представить себе шкаф, имеющий множество нумерованных ящиков

В качестве иллюстрации можете представить себе шкаф, имеющий множество нумерованных ящиков

В качестве иллюстрации можете представить себе шкаф, имеющий множество нумерованных ящиков.

Шкаф – это массив.

Ящики – это индексы.

Содержимое ящиков – элементы массива.

Доступ к содержимому конкретного ящика (элемента массива) осуществляется после указания шкафа –имени массива – и номера ящика – индекса массива.

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

Массивы 5 10 15 20 25 1 2 3 4 5

Массивы 5 10 15 20 25 1 2 3 4 5

10

Массивы

5

10

15

20

25

1

2

3

4

5

A

массив

3

15

НОМЕР элемента массива
(ИНДЕКС)

A[1]

A[2]

A[3]

A[4]

A[5]

ЗНАЧЕНИЕ элемента массива

A[2]

НОМЕР (ИНДЕКС) элемента массива: 2

ЗНАЧЕНИЕ элемента массива: 10

Характеристики массива Имя задается правилами задания имен идентификаторов

Характеристики массива Имя задается правилами задания имен идентификаторов

Характеристики массива

Имя задается правилами задания имен идентификаторов.
Индекс (порядковый номер элемента массива)местоположение элемента в массиве.
Размер - количество элементов массива.
Размерность - количество индексов массива.

Доступ к элементу Обращение к любому элементу массива происходит по имени массива и его номеру

Доступ к элементу Обращение к любому элементу массива происходит по имени массива и его номеру

Доступ к элементу

Обращение к любому элементу массива происходит по имени массива и его номеру.

1

2

3

4

T[4]:=4;

5

10

15

20

25

А[2]:=10;

1 2 3 4 5

А

Т

1
2
3
4

Обращение к конкретному элементу массива осуществляется путем указания имени массива и индекса этого элемента в [ ] :

Обращение к конкретному элементу массива осуществляется путем указания имени массива и индекса этого элемента в [ ] :

Обращение к конкретному элементу массива осуществляется путем указания имени массива и индекса этого элемента в [ ] :

Name[15], Temperature[10], Kino[5,6]

В качестве индексов массивов можно использовать переменные целого типа:

Элементы массивов используются в выражениях также, как и обычные переменные:

Name[15]:= ‘ Иванов ‘;
Sum:=Sum+Temperature[10];
Kino[5,6]:=‘Свободно ‘ ;

Name[i], Temperature[k], Kino[i,j]

Типы массива Тип таблицы Целый

Типы массива Тип таблицы Целый

Типы массива

Тип таблицы

Целый

Вещественный

Литерный

температура воздуха за месяц

вес учеников класса

список класса

Основные этапы работы с массивами 2

Основные этапы работы с массивами 2

Основные этапы работы с массивами

2. Заполнение массива данными

3. Обработка (преобразование) массива

4. Вывод массива или
отдельных данных на экран

1. Объявление массива

Для того, чтобы использовать массив в программе, его нужно описать в разделе описаний:

Для того, чтобы использовать массив в программе, его нужно описать в разделе описаний:

Для того, чтобы использовать массив в программе, его нужно описать в разделе описаний:
Var имя_массива : array [тип индексов] of тип_элементов;
Имя массива выбираем по основным правилам имен идентификаторов.
Тип индексов: [начальный_индекс . . конечный_индекс ]
Например: [1..5 ] [10..100 ] [-10..10 ]

Например:
Var
Name: array [1..30] of string;
Temperature : array [1..31] of real;

Объявление массивы (I способ)

Объявление массивов Зачем объявлять? определить имя массива определить тип массива определить число элементов выделить место в памяти

Объявление массивов Зачем объявлять? определить имя массива определить тип массива определить число элементов выделить место в памяти

Объявление массивов

Зачем объявлять?
определить имя массива
определить тип массива
определить число элементов
выделить место в памяти
Массив целых чисел:


Размер через константу:

имя

начальный индекс

конечный индекс

тип
элементов


var A: array[1.. ] of integer;

const N=5;

N

var A : array[ 1 .. 5 ] of integer ;

Объявление массивов Массивы других типов:

Объявление массивов Массивы других типов:

Объявление массивов

Массивы других типов:
Другой диапазон индексов:
Индексы других типов:

var X, Y: array [1..10] of real;
C: array [1..20] of char;

var Q: array [0..9] of real;
C: array [-5..13] of char;

var A: array ['A'..'Z'] of real;
B: array [False..True] of integer;
...
A['C'] := 3.14259*A['B'];
B[False] := B[False] + 1;

Не обязательно начинается с 0 или с 1

Не обязательно начинается с 0 или с 1


Не обязательно начинается с 0 или с 1.
Необходимо, чтобы номер последнего элемента был больше, чем номер первого элемента:
var А: array [-5..4] of integer;
Нумеровать элемент массива можно не только целыми числами. Нумератором может быть любой порядковый тип данных (перечисляемый, интервальный, символьный, логический), а также произвольный тип, созданный на их основе.

Нумерация элемента массива

В языке Паскаль имеется другая форма описания, состоящая из 2-х этапов

В языке Паскаль имеется другая форма описания, состоящая из 2-х этапов

В языке Паскаль имеется другая форма описания, состоящая из 2-х этапов.
Сначала в разделе описания типов TYPE указывается тип массива.
Затем в разделе переменных VAR перечисляются массивы, относящиеся к указанному типу.
Форма объявления массива имеет вид:
TYPE имя типа = ARRAY[t1] OF t2;
VAR имя массива: имя типа;
где t1 – тип индекса; t2 – базовый тип элементов массива.
Например:

Объявление массивы (II способ)

TYPE MAS = ARRAY[1..10] OF REAL;
VAR R:MAS;

Что неправильно? var a: array[10

Что неправильно? var a: array[10

21

Что неправильно?

var a: array[10..1] of integer;
...
A[5] := 4.5;

[1..10]

var a: array ['z'..'a'] of integer;
...
A['B'] := 15;

A[2]

[1..10]

var a: array [0..9] of integer;
...
A[10] := 'X';

Способы заполнения одномерных массивов

Способы заполнения одномерных массивов

Способы заполнения одномерных массивов

Команда присваивания:
непосредственное присваивание значений элементам A[1]:=7; A[2]:=77; A[3]:=33; и т. д.;
часто требуется обнуление ячеек массива;
с помощью формул;
генерация (randomize) и присваивание значений с помощью функции A[I]:=random(q-p+1)+p; qp;
с помощью CONST;
ввод значений элементов с клавиатуры;

Заполнение массива с помощью команды присваивания 10 12 8 10 9 8

Заполнение массива с помощью команды присваивания 10 12 8 10 9 8

Заполнение массива с помощью команды присваивания

10

12

8

10

9

8

Этот способ применяется в том случае, когда информация в таблице не меняется.

Аксенов

Бобров

Веснин

Гончаров

Давыдов

TEMP: array [1..7] of integer;

SP: array [1..5] of string;

BEGIN TEMP[1]:=10; TEMP[2]:=12; TEMP[3]:=8; TEMP[4]:=10; TEMP[5]:=9; TEMP[6]:=8; TEMP[7]:=8;

BEGIN SP[1]:=‘Аксенов’; SP[2]:=‘Бобров’; SP[3]:=‘Веснин’; SP[4]:=‘Гончаров’; SP[5]:=‘Давыдов’;

Заполнение массивов с помощью команды присваивания

Заполнение массивов с помощью команды присваивания

Заполнение массивов с помощью команды присваивания

For i:=1 to 6 do begin
a[i]:=i*i;
write(a[i]:4);
end;

For i:=1 to 6 do
begin
a[i]:=0;
write(a[i]:4);
end;

Задание с помощью формул:


Заполнение нулями:

1 4 9 16 25 36

0 0 0 0 0 0

Заполнение массива вводом с клавиатуры

Заполнение массива вводом с клавиатуры

Заполнение массива вводом с клавиатуры

Наиболее распространенный способ заполнения массива. Используется, когда для разных таблиц необходимо произвести одни операции обработки.

for i:=1 to 7 do begin write(‘Введите ‘,i,’температуру ‘); readln(TEMP[i]);
end;

for i:=1 to 5 do begin write(‘Введите ‘,i,’ученика ‘); readln(SP[i]);
end;

for i:=1 to 5 do
begin
write('a[', i, ']=');
read (a[i]);
end;

a[1] =
a[2] =
a[3] =
a[4] =
a[5] =

5
12
34
56
13

Заполнение массивов постоянными значениями

Заполнение массивов постоянными значениями

Заполнение массивов постоянными значениями

Можно задавать постоянный массив в разделе описания констант

const x: array [1..10] of integer=(4,6,3,5,2,1,7,8,9,13);
const y: array [1..8] of char=('a','b','c','d','e','f','g','h');

Заполнение массивов случайными числами

Заполнение массивов случайными числами

Заполнение массивов случайными числами

Задание с помощью генератора случайных чисел

Randomize;
i:=1 to n do
begin
a[i]:=random(100);
write(a[i]:4);
end;

Алгоритм состоит из трех пунктов:

Перезапустить генератор случайных чисел.
Ввести количество элементов n (или сгенерировать случайное значение n).
Сгенерировать значения для всех элементов.
{1 - перезапускаем генератор случайных чисел} randomize; {2 - генерируем случайное значение n} n:=random(maxN); {3 - генерируем n элементов массива} for i:=1 to n do a[i]:=random(100); {каждый элемент примет значение из интервала 0..99}

for

Информация об используемых стандартных процедурах и функциях:

Информация об используемых стандартных процедурах и функциях:

Информация об используемых стандартных процедурах и функциях:

Randomize - инициализирует генератор случайных чисел случайным значением (случайное значение зависит от момента перезапуска, т.е. зависит от времени).
Язык Pascal имеют функцию – датчик случайных чисел:
Random(N) - возвращает случайное целое число, находящееся в интервале 0 .. (N-1)
Random, тип REAL присваивается случайное значение от 0 до 0.99999999.
Если N<=0, то Random всегда будет возвращать 0. Чтобы получить значения в интервале, отличном от [0..N-1], необходимо к значению, возвращаемому Random, прибавить смещение начала интервала.
Общий случай функции на [p;q]: random(q-p+1)+p; qp;

Пример 1: необходим интервал [-50 .. 50]. Длина интервала 101, смещение начала интервала -50. random(101)-50 Пример 2: необходим интервал [20 .. 30]. Длина интервала - 11, смещение начала интервала 20. random(11)+20

Вывод массива на экран writeln('Массив

Вывод массива на экран writeln('Массив

Вывод массива на экран

writeln('Массив A:');
for i:=1 to N do write(a[i]:4);

Массив A:
10 24 68 112 26

writeln('Массив A:');
for i:=1 to N do writeln(a[i]:4);

Массив A:
10
24
68
112
26

Вывод элементов массива построчно (в столбик)

Вывод элементов массива в строку

Program Random_mas; Var i: integer;

Program Random_mas; Var i: integer;

Program Random_mas;
Var i: integer;
Ran : array [1..10] of integer;
Begin
Randomize;
For i:=1 to 10 do
begin
ran[i]:=random(101);
writeln(ran[i]);
end;
end.

Задача
Заполнить массив случайными числами из интервала [0;100] и вывести его на экран компьютера.

2
56
78
14
47
9
19
35
51
82

ВОПРОСЫ Как изменить программу, чтобы выводились числа [-20;20]?

ВОПРОСЫ Как изменить программу, чтобы выводились числа [-20;20]?

ВОПРОСЫ

Как изменить программу, чтобы выводились числа [-20;20]?

Как изменить программу, чтобы выводились числа типа REAL?

Как изменить программу, чтобы выводились элементы массива в строку?

ran[i]:=random(41)-20;

ran[i]:=random;

write(ran[i]:5);

План программы для работы с массивами

План программы для работы с массивами

План программы для работы с массивами

Program Task;
const n=….; (количество элементов массива)
var
<имя массива>: array [1..n] of <тип>;
i:integer;………….
BEGIN
writeln(‘Программу составили...');
{заполнение массива одним из способов}
for i:=1 to n do
begin
……
end;
{Печать массива одним из способов}
for i:=1 to n do
begin
…….
end;
Команды обработки массива
Вывод результата
END.

ПРАКТИЧЕСКАЯ РАБОТА «ЗАПОЛНЕНИЕ

ПРАКТИЧЕСКАЯ РАБОТА «ЗАПОЛНЕНИЕ

ПРАКТИЧЕСКАЯ РАБОТА «ЗАПОЛНЕНИЕ И ВЫВОД МАССИВОВ»

Заполнить и вывести на экран одномерный массив целых чисел.
{******* заполнение массива c случайными числами *******}
Заполнить и вывести на экран одномерный массив целых чисел.
{******* заполнение массива c клавиатуры *******}
Заполнить и вывести на экран одномерный массив символов.
{******* заполнение массива c в разделе CONST *******}

Домашнее задание Заполнить массив нулями и вывести значения в строку

Домашнее задание Заполнить массив нулями и вывести значения в строку

Домашнее задание

Заполнить массив нулями и вывести значения в строку.
Заполнить массив дробными и отрицательными значениями, используя случайные числа. Вывести элементы массива построчно.
Заполнить и вывести на экран одномерный массив, содержащий 200 одинаковых элементов.

Итоги урока: На этом уроке мы узнали:

Итоги урока: На этом уроке мы узнали:

Итоги урока:

На этом уроке мы узнали:
Массив – это структура данных, представляющая собой совокупность элементов одного типа.
Массив должен быть объявлен в разделе объявления переменных.
Доступ к элементу массива осуществляется путем указания имени массива и индекса (номера) элемента.
Для ввода, вывода и обработки массивов удобно применять команды цикла.
Существуют несколько способов ввода элементов массива в память.

В оглавление

Программирование на языке Паскаль

Программирование на языке Паскаль

36

Программирование на языке Паскаль

Тема 2. Обработка одномерных массивов

Вопросы: Что такое массив? Каковы его характеристики?

Вопросы: Что такое массив? Каковы его характеристики?

Вопросы:

Что такое массив? Каковы его характеристики?
Перечислить способы описания массива?
Перечислить способы заполнения массива?
Каковы отличие вывода в строку и в столбец?

Основная классификация обработки элементов массива: задачи заполнения задачи подсчета задачи анализа задачи поиска задачи перестановки сортировка массива

Основная классификация обработки элементов массива: задачи заполнения задачи подсчета задачи анализа задачи поиска задачи перестановки сортировка массива

Основная классификация обработки элементов массива:

задачи заполнения

задачи подсчета

задачи анализа

задачи поиска

задачи перестановки

сортировка массива

Вставка и удаление элементов массива

Примеры типовые задачи: вычисление суммы и произведения элементов массива (для числовых массивов); вычисление среднего арифметического, геометрического элементов массива; замена элементов массива по условию; подсчет заданных…

Примеры типовые задачи: вычисление суммы и произведения элементов массива (для числовых массивов); вычисление среднего арифметического, геометрического элементов массива; замена элементов массива по условию; подсчет заданных…

Примеры типовые задачи:

вычисление суммы и произведения элементов массива (для числовых массивов);
вычисление среднего арифметического, геометрического элементов массива;
замена элементов массива по условию;
подсчет заданных элементов в массиве;
нахождение в массиве заданного элемента;
поиск в массиве максимального (минимального) элемента;
определение индекса максимального (минимального) значения;
сортировка элементов массива;
перестановка элементов массива по заданному правилу;
удаление и вставка элемента.

Поиск элементов массива If условие поиска then { для поиска элементов} write(a[i]); { для поиска номера элементов} k:=i; или write(i:4);

Поиск элементов массива If условие поиска then { для поиска элементов} write(a[i]); { для поиска номера элементов} k:=i; или write(i:4);

Поиск элементов массива

If условие поиска then { для поиска элементов} write(a[i]);
{ для поиска номера элементов} k:=i; или write(i:4);

A[i] mod 2 = 0 нечетные A[i] mod 2 <> 0 кратные

A[i] mod 2 = 0 нечетные A[i] mod 2 <> 0 кратные

четные

A[i] mod 2 = 0

нечетные

A[i] mod 2 <> 0

кратные

A[i] mod k = 0

некратные

A[i] mod k <> 0

на четных местах

i mod 2 = 0

на нечетных местах

i mod 2 <> 0

положительные

A[i] > 0

не отрицательные

A[i] >= 0

в интервале (х1,х2)

(A [i]>x1) and (A [i]

Подсчет заданных элементов в массиве по условию

Условия обработки элементов массива:

Program Poisk_mas; Var i, x: integer;

Program Poisk_mas; Var i, x: integer;

Program Poisk_mas;
Var i, x: integer;
A : array [1..20] of integer;
c: string;
Begin
Randomize;
Write ('Zadayte chislo X ');
readln (x);
c:='v massive net chisla x';
For i:=1 to 20 do
begin
a[i]:=random(10);
writeln(A[i]);
if a[i]=x then c:='v massive est chislo x';
end;
writeln (c);
end.

Задача
Определить, содержит ли массив A[1..20] случайных чисел число Х, введенное с клавиатуры.

Нахождение в массиве заданного элемента

Задача Напишите программу вывода на экран всех дней января, прогнозный размер осадков в которые не превысит значение 9

Задача Напишите программу вывода на экран всех дней января, прогнозный размер осадков в которые не превысит значение 9

Задача

Напишите программу вывода на экран всех дней января, прогнозный размер осадков в которые не превысит значение 9. Размер осадков определить случайным образом.

program vyvod_nomer;
var
mas:array[1..31] of Integer;
i:integer;
Begin
{ блок ввода элементов массива }
For i:=1 to 31 do
begin
if mas[i]<=9 then
writeln(mas[i],’ осадков выпадет',i,' января');
end;
End.

Задача Написать программу, которая сначала должна обеспечить ввод 5 чисел в одномерный массив, затем вычислить их сумму и вывести ее на экран

Задача Написать программу, которая сначала должна обеспечить ввод 5 чисел в одномерный массив, затем вычислить их сумму и вывести ее на экран

Задача
Написать программу, которая сначала должна обеспечить ввод 5 чисел в одномерный массив, затем вычислить их сумму и вывести ее на экран.

Вычисление суммы и произведения элементов массива

Program Sum_mas; uses Crt; Var i: integer;

Program Sum_mas; uses Crt; Var i: integer;

Program Sum_mas;
uses Crt;
Var i: integer;
Sum : real;
M : array [1..5] of Real;
begin
Clrscr;
For i:=1 to 5 do
begin
write ('m[',i,']=');
readln(m[i]);
end;
sum:=0;
For i:=1 to 5 do
Sum:=sum+m[i];
Writeln ('Sum=',sum:6:2);
readln;
end.

Замена элементов Задача Заменить в массиве четные элементы на квадраты этих значений

Замена элементов Задача Заменить в массиве четные элементы на квадраты этих значений

Замена элементов

Задача
Заменить в массиве четные элементы на квадраты этих значений.

Program zamena;
var
mas:array[1..10] of Integer;
i:integer;
Begin
{ блок ввода элементов массива }
For i:=1 to 10 do
if mas[i] mod 2=0 then
mas[i]:=sqr(mas[i] );
{ блок вывода элементов получившегося массива }
End.

Задача Вычислить среднее геометрическое 15 чисел, заданных случайным образом

Задача Вычислить среднее геометрическое 15 чисел, заданных случайным образом

program sr_geo;
const n = 15; a = – 20; b = 10;
type mas = array [1..n] of integer;
var i: integer; m: mas; sr, p:real;
begin
randomize;
for i:=1 to n do
begin
m[i]:= random(b – a) + a;
write(m[i]:6);
end;
begin
p := 1;
for i:= 1 to n do p := p * m[i];
sg:= exp((1 / n)*ln(abs(p)));
writeln ('среднее геометрическое элементов массива = ', sg:6:2);
readln;
end.

Задача
Вычислить среднее геометрическое 15 чисел, заданных случайным образом.

Program kolichestvo; var X:array[0

Program kolichestvo; var X:array[0

Program kolichestvo;
var X:array[0..9] of byte;
k, R : byte;
begin
{ввод элементов массива}
{проверка на совпадение}
R:=0;
for k:=0 to 9 do
if X[k]=k then R:=R+1;
{вывод результата}
write('совпали со своими индексами ', R, ' элементов');
end.

Массив из 10 элементов с индексами от 0 до 9 заполняется случайным образом цифрами от 0 до 9. Определить, значения скольких элементов совпадут с индексами этих элементов.

Подсчет заданных элементов в массиве

Задача 1. Написать программу, которая вычисляет среднюю за неделю температуру воздуха

Задача 1. Написать программу, которая вычисляет среднюю за неделю температуру воздуха

Задача 1.
Написать программу, которая вычисляет среднюю за неделю температуру воздуха. Исходные данные должны вводиться во время работы программы.
Рекомендуемый вид экрана при работе программы:

Введите температуру воздуха за неделю.
1 день= 2
2 день= 0
3 день= -3
4 день= 1
5 день= 3
6 день= -2
7 день= 0
Средняя температура: 0.00 град.

Задание для практической работы:

Задача 2 Написать программу, которая определяет, сколько раз в массиве случайных чисел

Задача 2 Написать программу, которая определяет, сколько раз в массиве случайных чисел

Задача 2
Написать программу, которая определяет, сколько раз в массиве случайных чисел A[1..100] встречается число Х, введенное с клавиатуры.

Задания для практической работы:

Дополнительная задача: Напишите программу подсчета суммы всех чисел и суммы положительных чисел до первого отрицательного или равного 0 в массиве из 10 элементов

Дополнительная задача: Напишите программу подсчета суммы всех чисел и суммы положительных чисел до первого отрицательного или равного 0 в массиве из 10 элементов

program my;
var
i,s:integer;
mas:array[1..10] of integer;
begin
s:=0;
for i:=1 to 10 do
begin
mas[i]:=random(201)-100;
writeln(mas[i]);
s:=s+mas[i];
end;
writeln('summa=',s);
i:=1;
s:=0;
while mas[i]>0 do
begin
s:=s+mas[i];
end;
writeln('summa2=',s);
end.

Дополнительная задача:
Напишите программу подсчета суммы всех чисел и суммы положительных чисел до первого отрицательного или равного 0 в массиве из 10 элементов. Массив заполнить случайным образом.

Домашнее задание Задача 1. Написать программу, которая вводит с клавиатуры одномерный массив из 5 целых чисел и выводит количество ненулевых элементов

Домашнее задание Задача 1. Написать программу, которая вводит с клавиатуры одномерный массив из 5 целых чисел и выводит количество ненулевых элементов

Домашнее задание

Задача 1.
Написать программу, которая вводит с клавиатуры одномерный массив из 5 целых чисел и выводит количество ненулевых элементов. Перед вводом каждого элемента должна появляться подсказка с номером.
Рекомендуемый вид экрана при работе программы:
После ввода каждого числа нажмите
A[1]= 12
A[2]= 0
A[3]= -3
A[4]= 1
A[5]= 0
В массива 3 ненулевых элемента

Задача 2 . Написать программу, которая вычисляет среднее арифметическое ненулевых элементов массива

Задача 2 . Написать программу, которая вычисляет среднее арифметическое ненулевых элементов массива


Задача 2.
Написать программу, которая вычисляет среднее арифметическое ненулевых элементов массива М[1..100], элементы которого вычисляются по формуле:
М[i]=sin(i)*cos(i)
Задача 3.
Написать программу, которая проверяет, образуют ли элементы массива Х[1..10], введенного с клавиатуры неубывающую последовательность.

Домашнее задание

Обработка одномерных массивов (продолжение)

Обработка одномерных массивов (продолжение)

Обработка одномерных массивов

(продолжение)

Вопросы: Перечислить основные типы задач на обработку массива

Вопросы: Перечислить основные типы задач на обработку массива

Вопросы:

Перечислить основные типы задач на обработку массива.
Написать формулу нахождения суммы элементов массива (произведения).
Написать формулу подсчета количества элементов по условию.
Каковы условия поиска элементов?

Значения элементов двух массивов

Значения элементов двух массивов

Значения элементов двух массивов А и В размером 1 х 100 задаются с помощью следующего фрагмента программы:
for i:=1 tо 100 do
A[i] := 50 – i;
for i:=1 tо 100 do
B[i] := A[i] + 49;
Сколько элементов массива В будут иметь отрицательные значения?
1) 1 2) 10 3) 50 4) 100

СУММА ДВУХ ОДИНАКОВЫХ ПО РАЗМЕРУ

СУММА ДВУХ ОДИНАКОВЫХ ПО РАЗМЕРУ

СУММА ДВУХ ОДИНАКОВЫХ ПО РАЗМЕРУ МАССИВОВ

Заполнить и вывести на экран два одинаковых по размеру массива: А и B.
Найти массив C, каждый элемент которого равен сумме соответствующих элементов массивов
А и В: C[i]=A[i]+B[i].

Задача

Program Summa_Mass;
Type mas= array[1..100] of integer;
var a, b, c: mas;
I, n: integer;
Begin
n:=20;
writeln('Ввoд массива А:);
{ заполнение исходного массива A }
writeln('Ввод массива В:);
{ заполнение исходного массива В }
{ вывод на экран массивов А и B }
{ формирование нового массива С }
for i:=1 to n do c[i]:=a[i]+b[i];
write(' C: ');
for i:=1 to n do write(' ',c[i]);
End.

ОБЪЕДИНЕНИЕ ДВУХ МАССИВОВ С ЧЕРЕДОВАНИЕМ

ОБЪЕДИНЕНИЕ ДВУХ МАССИВОВ С ЧЕРЕДОВАНИЕМ

ОБЪЕДИНЕНИЕ ДВУХ МАССИВОВ С ЧЕРЕДОВАНИЕМ ЭЛЕМЕНТОВ

ЗАДАЧА
Объединить два массива A и B,содержащих по N элементов в один массив С, который будет содержать 2*N элементов, т.е. получить массив C=(а1,b1,a2,b2,..,an,bn).

Program Ob_Mass; type massiv=array[1

Program Ob_Mass; type massiv=array[1

Program Ob_Mass;
type massiv=array[1..20] of integer;
var a,b,c: massiv;
I, n: integer;
Begin
n:=10;
for i:=1 to n do
begin
write('Элемент [',i,']='); readln(a[i]);
end;
writeln;
for i:=1 to n do
begin
write('Элемент [',i,']='); readln(b[i]);
end;
write('Массив А: ');
for i:=1 to n do
begin
write(a[i]:5);
end;
writeln;

write('Массив B: ');
for i:=1 to n do
begin
write(b[i]:5);
end;
writeln;
for i:=1 to n do
begin
c[2*i-1]:=a[i];
c[2*i]:=b[i]
end;
write('Массив C: ');
for i:=1 to 2*n do
begin
write(c[i]:5);
end;
End.

ФОРМИРОВАНИЕ МАССИВА ИЗ ЭЛЕМЕНТОВ

ФОРМИРОВАНИЕ МАССИВА ИЗ ЭЛЕМЕНТОВ

ФОРМИРОВАНИЕ МАССИВА ИЗ ЭЛЕМЕНТОВ ДРУГОГО МАССИВА, УДОВЛЕТВОРЯЮЩИХ ЗАДАННОМУ УСЛОВИЮ

ЗАДАЧА
Требуется из данного массива А, состоящего из N элементов, выбрать элементы, удовлетворяющие заданному (пусть А(i)>T (с клавиатуры)), и сформировать из них массив B.
Исходный массив А: 4 6 8 2 23 1 9
Условие: A(i)>=8
Новый массив B: 8 23 9
Особенность решения: Индексы элементов массивов A и B не совпадают, так как не все элементы массива A включаются в массив B.

Program Massiv_po_Uslowiu; {раздел описания}

Program Massiv_po_Uslowiu; {раздел описания}

Program Massiv_po_Uslowiu;
{раздел описания}
Begin
{ заполнение исходного массива A }
writeln;
{ вывод исходного массива A }
{ формирование массива В по условию }
write('Введите параметр условия: ');
readln(t);
k:=0; {k- счетчик найденных элементов }
for i:=1 to n do
if a[i]>=t then
begin
k:=k+1;
b[k]:=a[i];
end;
{ вывод на экран нового массива B }
For i:=1 to k do write (b[i], ‘ ‘);
End.

Программирование на языке Паскаль

Программирование на языке Паскаль

62

Программирование на языке Паскаль

Максимальный элемент массива

Максимальный элемент Задача: найти в массиве максимальный элемент

Максимальный элемент Задача: найти в массиве максимальный элемент

63

Максимальный элемент

Задача: найти в массиве максимальный элемент.
Алгоритм:

Псевдокод:

{ считаем, что первый элемент – максимальный }
for i:=2 to N do
if a[i] > { максимального } then
{ запомнить новый максимальный элемент a[i] }

Максимальный элемент max := a[1]; { считаем, что первый – максимальный } iMax := 1; for i:=2 to

Максимальный элемент max := a[1]; { считаем, что первый – максимальный } iMax := 1; for i:=2 to

64

Максимальный элемент

max := a[1]; { считаем, что первый – максимальный }
iMax := 1;
for i:=2 to N do { проверяем все остальные }
if a[i] > max then { нашли новый максимальный }
begin
max := a[i]; { запомнить a[i] }
iMax := i; { запомнить i }
end;

Дополнение: как найти номер максимального элемента?

По номеру элемента iMax всегда можно найти его значение a[iMax]. Поэтому везде меняем max на a[iMax] и убираем переменную max.

a[iMax]

Программа program qq; const N = 5; var a: array [1

Программа program qq; const N = 5; var a: array [1

65

Программа

program qq;
const N = 5;
var a: array [1..N] of integer;
i, iMax: integer;
begin
writeln('Исходный массив:');
for i:=1 to N do begin
a[i] := random(100) + 50;
write(a[i]:4);
end;
iMax := 1; { считаем, что первый – максимальный }
for i:=2 to N do { проверяем все остальные }
if a[i] > a[iMax] then { новый максимальный }
iMax := i; { запомнить i }
writeln; {перейти на новую строку}
writeln('Максимальный элемент a[', iMax, ']=', a[iMax]);
end.

for i:=1 to N do begin
a[i] := random(100) + 50;
write(a[i]:4);
end;

iMax := 1; { считаем, что первый – максимальный }
for i:=2 to N do { проверяем все остальные }
if a[i] > a[iMax] then { новый максимальный }
iMax := i; { запомнить i }

случайные числа в интервале [50,150)

поиск максимального

Program Max_mas; Var i:integer; max: real;

Program Max_mas; Var i:integer; max: real;

Program Max_mas;
Var i:integer;
max: real;
A : array [1..10] of real;
begin
For i:=1 to 10 do
begin
a[i]:=sin(i)*sqr(i);
writeln(A[i]:8:3);
end;
max:=A[1];
For i:=2 to 10 do
if a[i]> max then max:=a[i];
writeln;
writeln ('max=', max:8:3);
end.

Задача
Заполнить массив значениями, вычисляемыми по формуле:
a[i]:=sin i *i2
Вывести элементы этого массива на экран компьютера и найти максимальное значение среди них.

Задания «4»: Ввести c клавиатуры массив из 5 элементов, найти среднее арифметическое всех элементов массива

Задания «4»: Ввести c клавиатуры массив из 5 элементов, найти среднее арифметическое всех элементов массива

67

Задания

«4»: Ввести c клавиатуры массив из 5 элементов, найти среднее арифметическое всех элементов массива.
Пример:
Введите пять чисел:
4 15 3 10 14
среднее арифметическое 9.200
«5»: Ввести c клавиатуры массив из 5 элементов, найти минимальный из них.
Пример:
Введите пять чисел:
4 15 3 10 14
минимальный элемент 3

Задания «4»: Заполнить массив из 10 элементов случайными числами в интервале [-10

Задания «4»: Заполнить массив из 10 элементов случайными числами в интервале [-10

68

Задания

«4»: Заполнить массив из 10 элементов случайными числами в интервале [-10..10] и найти в нем максимальный и минимальный элементы и их номера.
Пример:
Исходный массив:
4 -5 3 10 -4 -6 8 -10 1 0
максимальный a[4]=10
минимальный a[8]=-10
«5»: Заполнить массив из 10 элементов случайными числами в интервале [-10..10] и найти в нем два максимальных элемента и их номера.
Пример:
Исходный массив:
4 -5 3 10 -4 -6 8 -10 1 0
максимальные a[4]=10, a[7]=8

Обработка одномерного массива (продолжение)

Обработка одномерного массива (продолжение)

Обработка одномерного массива

(продолжение)

Задача Найти минимальную из сумм a1 + an; a2 + an-1; …, где a1,a2, … an – элементы массива

Задача Найти минимальную из сумм a1 + an; a2 + an-1; …, где a1,a2, … an – элементы массива

Задача
Найти минимальную из сумм a1 + an; a2 + an-1; …, где a1,a2, … an – элементы массива.

program min_sum;
const n = 14;
type mas = array [1..n] of integer;
var i: integer; m: mas;
begin
randomize;
for i:=1 to n do
begin
m[i]:= random(100) - 30;
write(m[i]:6);
end;
min:=a[1] + a[n];
for i : = 2 to n div 2 do
if min > a[i] + a[n – i + 1] then min := a[i] + a[n – i + 1];
writeln ('минимальная сумма равна ', min)
end.

Реверс массива Задача: переставить элементы массива в обратном порядке

Реверс массива Задача: переставить элементы массива в обратном порядке

71

Реверс массива

Задача: переставить элементы массива в обратном порядке.
Алгоритм:
поменять местами A[1] и A[N], A[2] и A[N-1], …
Псевдокод:

3

5

9

7

7

9

5

3

1

2

N-1

N

1

2

N-1

N

for i:=1 to N do
{ поменять местами A[i] и A[N+1-i] }

сумма индексов N+1

N div 2

do

Как переставить элементы? 2 3 1

Как переставить элементы? 2 3 1

72

Как переставить элементы?

2

3

1

Задача: поменять местами содержимое двух чашек.

Задача: поменять местами содержимое двух ячеек памяти.

4

6

?

4

6

4

x

y

c

c := x;
x := y;
y := c;

x := y;
y := x;

3

2

1

Программа program qq; const N = 10; var

Программа program qq; const N = 10; var

73

Программа

program qq;
const N = 10;
var A: array[1..N] of integer;
i, c: integer;
begin
{ заполнить массив }
{ вывести исходный массив }



{ вывести полученный массив }
end.

for i:=1 to N div 2 do begin
c:=A[i]; A[i]:=A[N+1-i]; A[N+1-i]:=c;
end;

Циклический сдвиг Задача: сдвинуть элементы массива влево на 1 ячейку, первый элемент становится на место последнего

Циклический сдвиг Задача: сдвинуть элементы массива влево на 1 ячейку, первый элемент становится на место последнего

74

Циклический сдвиг

Задача: сдвинуть элементы массива влево на 1 ячейку, первый элемент становится на место последнего.
Алгоритм:
A[1]:=A[2]; A[2]:=A[3];… A[N-1]:=A[N];
Цикл:

3

5

8

1

9

7

1

2

3

4

N-1

N

5

8

1

9

7

3

for i:=1 to N-1 do
A[i]:=A[i+1];

почему не N?

Программа program qq; const N = 10; var

Программа program qq; const N = 10; var

75

Программа

program qq;
const N = 10;
var A: array[1..N] of integer;
i, c: integer;
begin
{ заполнить массив }
{ вывести исходный массив }



{ вывести полученный массив }
end.

c := A[1];
for i:=1 to N-1 do A[i]:=A[i+1];
A[N] := c;

УДАЛЕНИЕ И ВСТАВКА ЭЛЕМЕНТОВ

УДАЛЕНИЕ И ВСТАВКА ЭЛЕМЕНТОВ

УДАЛЕНИЕ И ВСТАВКА ЭЛЕМЕНТОВ

Удаление

Вставка

const=10;
var X:array[0..n] of integer;
k : byte;
m: integer;
begin
for k:=0 to n do
begin
X[k]:=random(100)-50;
write(X[k]:4);
end;
Write(‘укажите № удаляемого элемента’);
Readln(m);
for k:=m to n-1 do X[k]=X[k+1];
for k:=1 to n-1 do write(X[k]:4);
end.

const n=9;
var X:array[0..n+1] of integer;
k : byte;
m,p: integer;
begin
for k:=0 to n do
begin
X[k]:=random(100)-50;
write(X[k]:4);
end;
Write(‘укажите № вставляемого элемента’); Readln(m);
for k:=n downto m do X[k+1]=X[k];
Write(‘укажите значение элемента’);
Readln(p);
X[m]:=p;
for k:=1 to n+1 do
write(X[k]:4);
end.

Задания «4»: Заполнить массив из 10 элементов случайными числами в интервале [-10

Задания «4»: Заполнить массив из 10 элементов случайными числами в интервале [-10

77

Задания

«4»: Заполнить массив из 10 элементов случайными числами в интервале [-10..10] и выполнить инверсию отдельно для 1-ой и 2-ой половин массива.
Пример:
Исходный массив:
4 -5 3 10 -4 -6 8 -10 1 0
Результат:
-4 10 3 -5 4 0 1 -10 8 -6
«5»: Заполнить массив из 12 элементов случайными числами в интервале [-12..12] и выполнить инверсию для каждой трети массива.
Пример:
Исходный массив:
4 -5 3 10 -4 -6 8 -10 1 0 5 7
Результат:
10 3 -5 4 -10 8 -6 -4 7 5 0 1

Задания «4»: Заполнить массив из 10 элементов случайными числами в интервале [-10

Задания «4»: Заполнить массив из 10 элементов случайными числами в интервале [-10

78

Задания

«4»: Заполнить массив из 10 элементов случайными числами в интервале [-10..10] и выполнить циклический сдвиг ВПРАВО.
Пример:
Исходный массив:
4 -5 3 10 -4 -6 8 -10 1 0
Результат:
0 4 -5 3 10 -4 -6 8 -10 1
«5»: Заполнить массив из 12 элементов случайными числами в интервале [-12..12] и выполнить циклический сдвиг ВПРАВО на 4 элемента.
Пример:
Исходный массив:
4 -5 3 10 -4 -6 8 -10 1 0 5 7
Результат:
-4 -6 8 -10 1 0 5 7 4 -5 3 10

Задача Напишите программу, которая поменяет местами первый и наибольший элементы в массиве из 10 целых чисел

Задача Напишите программу, которая поменяет местами первый и наибольший элементы в массиве из 10 целых чисел

program perestanovka;
var
i,buf,maxi:integer;
mas:array[1..10] of integer;
begin
buf:=0;
for i:=1 to 10 do
begin
mas[i]:=random(21);
writeln(mas[i]);
end;
for i:=1 to 10 do
begin
if mas[i]>buf then
buf:=mas[i];
maxi:=i;
end;
mas[maxi]:=mas[1];
mas[1]:=buf;
for i:=1 to 10 do
writeln(mas[i]);
еnd.

Задача
Напишите программу, которая поменяет местами первый и наибольший элементы в массиве из 10 целых чисел.
Массив заполнить случайным образом.

Сортировка одномерного массива

Сортировка одномерного массива

Сортировка одномерного массива

Сортировка – это расстановка элементов массива в заданном порядке (по возрастанию, убыванию, последней цифре, сумме делителей, …)

Сортировка – это расстановка элементов массива в заданном порядке (по возрастанию, убыванию, последней цифре, сумме делителей, …)

Сортировка – это расстановка элементов массива в заданном порядке (по возрастанию, убыванию, последней цифре, сумме делителей, …). Алгоритмы: простые и понятные, но неэффективные для больших массивов; метод пузырька метод выбора сложные, но эффективные; «быстрая сортировка» (Quick Sort) сортировка «кучей» (Heap Sort) сортировка слиянием пирамидальная сортировка

Метод пузырька Для массивов – самый маленький («легкий» элемент перемещается вверх («всплывает»)

Метод пузырька Для массивов – самый маленький («легкий» элемент перемещается вверх («всплывает»)

Метод пузырька Для массивов – самый маленький («легкий» элемент перемещается вверх («всплывает»). Начиная снизу, сравниваем два соседних элемента; если они стоят «неправильно», меняем их местами. За 1 проход по массиву один элемент (самый маленький) становится на свое место Для сортировки массива из N элементов нужен N-1 проход (достаточно поставить на свои места N-1 элементов).

program sortirovka_puzyrek;
const N = 10;
var A: array[1..N] of integer;
i, j, c: integer;
begin
{ заполнить массив }
{ вывести исходный массив }
for i:=1 to N-1 do begin
for j:=N-1 downto i do
if A[j] > A[j+1] then begin
с := A[j];
A[j] := A[j+1];
A[j+1] := с;
end;
end;
{ вывести полученный массив }
end.

Метод пузырька с флажком Идея – если при выполнении метода пузырька не было обменов, массив уже отсортирован и остальные проходы не нужны

Метод пузырька с флажком Идея – если при выполнении метода пузырька не было обменов, массив уже отсортирован и остальные проходы не нужны

Метод пузырька с флажком Идея – если при выполнении метода пузырька не было обменов, массив уже отсортирован и остальные проходы не нужны. Реализация: переменная-флаг, показывающая, был ли обмен; если она равна False, то выход.

i := 0;
Repeat
i := i + 1;
flag := False; { сбросить флаг }
for j:=N-1 downto i do
if A[j] > A[j+1] then begin
с := A[j];
A[j] := A[j+1];
A[j+1] := с;
flag := True; { поднять флаг }
end;
until not flag; { выход при flag=False }

Метод выбора Идея: найти минимальный элемент и поставить на первое место (поменять местами с

Метод выбора Идея: найти минимальный элемент и поставить на первое место (поменять местами с

Метод выбора Идея: найти минимальный элемент и поставить на первое место (поменять местами с A[1]): из оставшихся найти минимальный элемент и поставить на второе место (поменять местами с A[2]), и т.д.

program sortirovka_vebor;
const N = 10;
var A: array[1..N] of integer;
i, j, c, nMin: integer;
begin
{ заполнить массив }
{ вывести исходный массив }
for i := 1 to N-1 do begin
nMin = i ;
for j:= i+1 to N do
if A[j] < A[nMin] then nMin:=j;
if nMin <> i then begin
c:=A[i];
A[i]:=A[nMin];
A[nMin]:=c;
end;
{ вывести полученный массив }
End.

Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
25.06.2020