Циклический
алгоритм обработки массива чисел, записанный на алгоритмическом языке
Разбор заданий № 10 ОГЭ (9 кл)
Что нужно
знать:
Массив
— это поименованная совокупность однотипных элементов, упорядоченных по
индексам, определяющим положение элемента в массиве.
Массивы используются
для реализации таких структур данных, как последовательности и таблицы.
Описание массива
Pascal
|
var <имя_массива>: array[imin
.. imax] of <тип_злементов>;
|
Python
|
имя_массива = [список элементов массива через запятую]
|
Типовые задачи:
|
Pascal
|
Python
|
вычисление суммы элементов массива;
(s - сумма)
|
s :=0;
for i = 1 to n do
s := s+a[i];
|
s = 0
for i in range (0, n) :
s = s+a[i]
|
определение количества элементов, удовлетворяющих
заданному условию;
(k - количество)
|
k := 0;
for i := 1 to n do
if a[i] > b then
k := k + 1;
|
k = 0
for i in range (0, n) :
if a[i] > b :
k = k + 1
|
поиск элемента с заданными свойствами:
l минимального
– a[i] < m
l максимального
– a[i] > m
(m - min или max)
|
m := a[1];
for i := 2 to n do
if a[i] > m then
m := a[i];
|
m = a[0]
for i in range (1,10) :
if a[i] > m :
m = a[i]
|
поиск номера элемента с заданными свойствами;
(r - номер элемента массива)
|
r := 1; b := a[1];
for i := 2 to n do
if a[i] < b then
begin
b := a[i];
r := i
end;
|
r = 1
b = a[0]
for i in range (1, n) :
if a[i] < b :
b = a[i]
r = i + 1
|
Информационные ресурсы:
1. Теория: Одномерные массивы целых
чисел
2. Задания
для тренировки: https://inf-oge.sdamgia.ru/test?theme=10,
3. Онлайн-тесты
для подготовки к ОГЭ Константина Полякова:
B10 — Обработка массивов
(Паскаль), B10 — Обработка массивов
(Python).
Задание
№ 10 (ДЕМО 2019 ФИПИ)
В
таблице Dat представлены данные о количестве голосов, поданных за 10
исполнителей народных песен (Dat[1] – количество голосов, поданных за
первого исполнителя; Dat[2] – за второго и т. д.). Определите, какое
число будет напечатано в результате работы следующей программы. Текст программы
приведён на двух языках программирования.
Pascal
|
Python
|
Решение:
|
Var
k, m: integer;
Dat: array[1..10] of integer;
Begin
Dat[1] := 16; Dat[2] := 20;
Dat[3] := 20; Dat[4] := 41;
Dat[5] := 14; Dat[6] := 21;
Dat[7] := 28; Dat[8] := 12;
Dat[9] := 15; Dat[10] := 35;
m := 0;
for k := 1 to 10 do
if Dat[k] > m then
begin
m := Dat[k]
end;
writeln(m);
End.
|
Dat
= [16, 20, 20, 41, 14, 21, 28, 12, 15, 35]
m = 0
for k in range (0,10) :
if Dat[k] > m :
m = Dat[k]
print (m)
|
1. Искомая
величина – m.
2. Рассмотрим
оператор
if Dat[k] > m :
m = Dat [k]
Если
элемент массива Dat[k] больше чем m, то переменной m
присваивается значение этого элемента.
3. Можно
сделать вывод, что программа реализует поиск максимального элемента
в массиве.
4. m = 41
Ответ: 41.
|
Разбор
заданий № 10. СтатГрад. Подготовка к ОГЭ 2019
Вариант № 1
В
таблице Dat хранятся отметки учащихся 9 класса за самостоятельную работу
(Dat[1] – отметка первого учащегося, Dat[2] – второго и т. д.).
Определите, какое число будет напечатано в результате работы следующей
программы. Текст программы приведён на двух языках программирования.
Pascal
|
Python
|
Решение:
|
var
k, m: integer;
Dat: array[1..10] of integer;
begin
Dat[1] := 4; Dat[2] := 5;
Dat[3] := 4; Dat[4] := 3;
Dat[5] := 2; Dat[6] := 3;
Dat[7] := 4; Dat[8] := 5;
Dat[9] := 5; Dat[10] := 3;
m := 0;
for k := 1 to 10 do
if Dat[k] > 3 then
m := m + 1;
writeln(m);
end.
|
Dat
= [4, 5, 4, 3, 2, 3, 4, 5, 5, 3]
m = 0
for k in range(0,10) :
if Dat[k] > 3 :
m = m + 1
print(m)
|
1. Искомая
величина – m.
2. Рассмотрим
оператор
if Dat[k] > 3 :
m = m + 1
Если
элемент массива Dat[k] больше чем 3, то значение переменной m
увеличивается на 1.
3.
Можно
сделать вывод, что программа реализует подсчёт количества элементов
массива, значение которых больше 3.
4. Таких
элементов в массиве 6. m = 6
Ответ:
6.
|
Вариант № 2
В
таблице Dat хранятся отметки учащихся 9 класса за самостоятельную работу
(Dat[1] – отметка первого учащегося, Dat[2] – второго и т. д.).
Определите, какое число будет напечатано в результате работы следующей
программы. Текст программы приведён на двух языках программирования.
Pascal
|
Python
|
Решение:
|
var
k, m: integer;
Dat: array[1..10] of integer;
begin
Dat[1] := 4; Dat[2] := 5;
Dat[3] := 4; Dat[4] := 3;
Dat[5] := 2; Dat[6] := 3;
Dat[7] := 4; Dat[8] := 5;
Dat[9] := 5; Dat[10] := 3;
m := 0;
for k := 1 to 10 do
if Dat[k] < 4 then
m := m + Dat[k];
writeln(m);
end.
|
Dat
= [4, 5, 4, 3, 2, 3, 4, 5, 5, 3]
m = 0
for k in range(0,10) :
if Dat[k] < 4 :
m = m + Dat[k]
print(m)
|
1.
Искомая
величина – m.
2.
Рассмотрим
оператор
if Dat[k]< 4 :
m = m + Dat[k]
Если элемент массива Dat[k] меньше
4, то к переменной m суммируется элемент Dat[k].
3.
Можно
сделать вывод, что программа реализует определение суммы элементов
массива, значение которых меньше 4.
4.
m
= 3+2+3+3 = 11.
Ответ: 11.
|
Вариант № 3
В
таблице Dat хранятся данные ежедневных измерений температуры морской
воды (Dat[1] – температура в понедельник, Dat[2] – во вторник и
т. д.).
Определите,
что будет напечатано в результате выполнения следующего алгоритма.
Pascal
|
Python
|
Решение:
|
var
k, day: integer;
Dat:
array[1..7] of integer;
begin
Dat[1] := 19; Dat[2] := 21;
Dat[3] := 20; Dat[4] := 23;
Dat[5] := 24; Dat[6] := 25;
Dat[7] := 23;
day := Dat[1];
for k := 1 to 7 do
if Dat[k] > day then
day := Dat[k];
writeln(day);
end.
|
Dat
= [19, 21, 20, 23, 24, 25, 23]
day
= Dat[0]
for
k in range (0,7) :
if Dat[k] > day :
day = Dat[k]
print
(day)
|
1.
Искомая
величина – day.
2. Рассмотрим
оператор
if Dat[k] > day :
day = Dat[k]
Если
элемент массива Dat[k] больше чем day, то переменной day
присваивается значение элемента Dat[k].
3.
Можно
сделать вывод, что программа реализует поиск максимального элемента
массива.
4.
day
= 25.
Ответ:
25.
|
Вариант
№ 4
В
таблице Dat хранятся данные измерений роста учеников 4 класса в
сантиметрах. (Dat[1] – рост первого ученика, Dat[2] – второго и
т. д.).
Определите,
что будет напечатано в результате выполнения следующего алгоритма.
Pascal
|
Python
|
Решение:
|
var
k, n, d: integer;
Dat: array[1..10] of integer;
begin
Dat[1]
:= 120; Dat[2] := 130;
Dat[3]
:= 110; Dat[4] := 150;
Dat[5]
:= 120; Dat[6] := 150;
Dat[7]
:= 110; Dat[8] := 140;
Dat[9]
:= 135; Dat[10] := 150;
n
:= 1; d := Dat[1];
for
k := 2 to 10 do
if Dat[k] < d then
begin
d := Dat[k];
n := k
end;
write(n);
end.
|
Dat
= [120, 130, 110, 150, 120, 150, 110, 140, 135, 150]
n
= 0
d
= Dat[0]
for
k in range (1,10) :
if Dat[k] < d :
d = Dat[k]
n = k + 1
print(n)
|
1.
Искомая
величина – n
2. Рассмотрим
оператор
if Dat[k] < d :
d = Dat[k]
n
= k + 1
Если
значение элемента массива Dat[k] меньше чем d, то переменной n
присваивается номер этого элемента.
3.
Можно
сделать вывод, что программа реализует поиск номера минимального
элемента массива.
4.
Т.к.
в условии поиска задано строгое неравенство, то это будет первый из
минимальных элементов в массиве. n = 3.
Ответ:
3.
|
Вариант № 5
Сотрудник
метеобюро в ходе измерений среднесуточной температуры воздуха записывал
показания термометра в таблицу Tem. (Tem[1] – температура, полученная
в результате первого измерения, Tem[2] – второго и т. д.).
Определите, какое число
будет напечатано в результате работы следующей программы.
Pascal
|
Python
|
Решение:
|
var
k, b: integer;
Tem: array[1..12] of integer;
begin
b := 0;
Tem[1] := 22; Tem[2] := 25;
Tem[3] := 20; Tem[4] := 18;
Tem[5] := 16; Tem[6] := 14;
Tem[7] := 20; Tem[8] := 23;
Tem[9] := 17; Tem[10] := 19;
Tem[11] := 20; Tem[12] := 21;
for k := 1 to 12 do
if Tem[k] < 19 then
b := b + Tem[k];
writeln(b);
end.
|
Tem
= [22, 25, 20, 18, 16, 14, 20, 23, 17, 19, 20, 21]
b
= 0
for
k in range (0,12) :
if Tem[k] < 19 :
b = b + Tem[k]
print(b)
|
1.
Искомая
величина – b.
2.
Рассмотрим
оператор
if Tem[k] < 19 :
b = b + Tem[k]
Если
элемент массива Tem[k] меньше 19, то к переменной b
суммируется элемент Tem[k].
3.
Можно
сделать вывод, что программа реализует определение суммы элементов
массива, значение которых меньше 19.
4.
b
= 18+16+14+17 = 65.
Ответ:
65.
|
Вариант
№ 6
Сотрудник
метеобюро в ходе измерений среднесуточной температуры воздуха записывал
показания термометра в таблицу Tem. (Tem[1] – температура,
полученная в результате первого измерения, Tem[2] – второго и т. д.).
Определите, какое число
будет напечатано в результате работы следующей программы.
Pascal
|
Python
|
Решение:
|
var
k, b: integer;
Tem: array[1..12] of integer;
begin
b := 15;
Tem[1] := 22; Tem[2] := 25;
Tem[3] := 20; Tem[4] := 18;
Tem[5] := 16; Tem[6] := 14;
Tem[7] := 20; Tem[8] := 23;
Tem[9] := 17; Tem[10] := 19;
Tem[11] := 20; Tem[12] := 21;
for k := 1 to 12 do
if Tem[k] < 20 then
b := b + 1;
writeln(b);
end.
|
Tem
= [22, 25, 20, 18, 16, 14, 20, 23, 17, 19, 20, 21]
b
= 15
for
k in range (0,12) :
if Tem[k] < 20 :
b = b + 1
print(b)
|
1.
Искомая
величина – b.
2.
Рассмотрим
оператор
if Tem[k] < 20 :
b = b + 1
Если
элемент массива Tem[k] меньше 20, то значение переменной b
увеличивается на 1.
3.
Можно
сделать вывод, что программа реализует подсчёт количества элементов
массива, значение которых меньше 20.
4.
Таких
элементов в массиве 5, но т.к. начальное значение b = 15, тов
результате получим b = 15+5=20
Ответ:
20.
|
Разбор заданий № 10. Решу ОГЭ. Образовательный портал для подготовки к
экзаменам
Задание 16 № 310
В
таблице Dat хранятся данные о количестве учеников в классах (Dat[1]
— количество учеников в первом классе, Dat[2] — во втором и т. д.).
Определите, какое число будет напечатано в результате работы следующей
программы.
Pascal
|
Python
|
Решение:
|
var
k, m: integer;
Dat:
array[1..11] of integer;
Begin
Dat[1] := 20; Dat[2] := 27;
Dat[3] := 19; Dat[4] := 28;
Dat[5] := 26; Dat[6] := 22;
Dat[7] := 24; Dat[8] := 28;
Dat[9] := 26; Dat[10] := 21;
Dat[11] := 27;
m := 0;
for k := 1 to 11 do
if Dat[k] < 25 then
begin
m := Dat[k];
end;
writeln(m);
End.
|
Dat
= [20, 27, 19, 28, 26, 22, 24, 28, 26, 21, 27]
m
= 0
for
k in range(11):
if Dat[k] < 25:
m = Dat[k]
print
(m)
|
1.
Искомая
величина – m.
2. Рассмотрим
оператор
if Dat[k] < 25 :
m = Dat[k]
Если
элемент массива Dat[k] меньше 25, то переменной m присваивается
значение элемента Dat[k].
3.
Можно
сделать вывод, что программа реализует поиск последнего в
массиве элемента меньшего 25.
4.
m
= 21.
Ответ:
21.
|
Задание 20 № 391
В
таблице Dat хранятся данные о количестве краткосрочных командировок, в
которые приходилось ездить сотруднику за последний год (Dat[1] — количество
командировок в январе, Dat[2] — количество командировок в феврале и т.
д.). Определите, что будет напечатано в результате выполнения следующего
алгоритма.
Pascal
|
Python
|
Решение:
|
Var
k, m, month: integer;
Dat:
array[1..12] of integer;
Begin
Dat[1] := 5; Dat[2] := 5;
Dat[3] := 6; Dat[4] := 8;
Dat[5] := 4; Dat[6] := 5;
Dat[7] := 4; Dat[8] := 7;
Dat[9] := 4; Dat[10] := 4;
Dat[11] := 8; Dat[12] := 7;
m := Dat[1];
month := 1;
for k := 2 to 12 do
if Dat[k] <= m then
begin
m := Dat[k];
month := k;
end;
writeln(month);
End.
|
Dat
= [5, 5, 6, 8, 4, 5, 4, 7, 4, 4, 8, 7]
m
= Dat[0]
month
= 1
for
k in range(1, 12):
if Dat[k] <= m:
m = Dat[k]
month = k + 1
print
(month)
|
1.
Искомая
величина – month.
2. Рассмотрим
оператор
if Dat[k] <= m :
m = Dat[k]
month = k + 1
Если
элемент массива Dat[k] меньше либо равен m, то переменной m
присваивается значение элемента Dat[k] и в переменной month сохраняется
номер этого элемента.
3.
Можно
сделать вывод, что программа реализует поиск номера последнего
в массиве минимального элемента.
4.
m
= 10.
Ответ:
10.
|
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.