Рис. П4.1
Рис. П4.2
Рис. П4.3
Рис. П4.4
Приложение 4. Определение условий принадлежности точки…
281
П4.2. а) Рис. П4.5; б) рис. П4.6; в) рис. П4.7; г) рис. П4.8.
x
y
y = x
x
y
y = –x
x
y
y = x
x
y
y = –x
Рис. П4.5
Рис. П4.6
Рис. П4.7
Рис. П4.8
П4.3. а) Рис. П4.9; б) рис. П4.10.
y = sin
x
x
y
y
x
y = sin
x
Рис. П4.9
Рис. П4.10
П4.4. а) Рис. П4.11; б) рис. П4.12.
x
y
x
y
–2
Рис. П4.11
Рис. П4.12
Примечание
На рис. П4.11 и П4.12 изображена парабола.
Приложения
282
П4.5. а) Рис. П4.13; б) рис. П4.14.
x
y
x
2
+ y
2
= 3
3
3
x
y
x
2
+ y
2
= 4
Рис. П4.13
Рис. П4.14
П4.6. а) Рис. П4.15; б) рис. П4.16; в) рис. П4.17; г) рис. П4.18.
x
y
y = –x
x
y
y = x
x
y
y = –x
y
y = x
x
Рис. П4.15
Рис. П4.16
Рис. П4.17
Рис. П4.18
П4.7. а) Рис. П4.19; б) рис. П4.20; в) рис. П4.21; г) рис. П4.22.
x
y
y = x
x = 3
y
x
y = –x
y = 3
y
x
y = x
y = –2
y = –x
x
y
x = –2
Рис. П4.19
Рис. П4.20
Рис. П4.21
Рис. П4.22
Приложение 4. Определение условий принадлежности точки…
283
П4.8. а) Рис. П4.23; б) рис. П4.24; в) рис. П4.25; г) рис. П4.26.
x
y
x
2
+ y
2
= 2
y
x
x
2
+ y
2
= 3
x
y
x
2
+ y
2
= 1
y
x
x
2
+ y
2
= 2
Рис. П4.23
Рис. П4.24
Рис. П4.25
Рис. П4.26
П4.9. а) Рис. П4.27; б) рис. П4.28; в) рис. П4.29; г) рис. П4.30.
y
x
x
2
+ y
2
= 2
y = 1
x
y
x = –2
x
2
+ y
2
= 4
y
y = –x
3
3 x
2
+ y
2
= 3
x
3
3
x
y
x
2
+ y
2
= 3
y = x
Рис. П4.27
Рис. П4.28
Рис. П4.29
Рис. П4.30
П4.10. а) Рис. П4.31; б) рис. П4.32; в) рис. П4.33; г) рис. П4.34.
x
y
y = 4
y
x
y = 2
–2
y
x
y = x
x
y
–3
y = –x
Рис. П4.31
Рис. П4.32
Рис. П4.33
Рис. П4.34
Приложения
284
П4.11. а) Рис. П4.35; б) рис. П4.36.
y
x
y = sin
x
y = 0,5
y
x
y = sin
x
y = –0,5
Рис. П4.35
Рис. П4.36
П4.12. а) Рис. П4.37; б) рис. П4.38; в) рис. П4.39; г) рис. П4.40.
x
y
x
2
+ y
2
= 3
x
y
x
2
+ y
2
= 2
x
y
x
2
+ y
2
= 4
x
y
x
2
+ y
2
= 2
Рис. П4.37
Рис. П4.38
Рис. П4.39
Рис. П4.40
П4.13. а) Рис. П4.41; б) рис. П4.42; в) рис. П4.43.
y
x
y = x
2
x
2
+ y
2
= 1
x
y
y = x
2
x
2
+ y
2
= 2
x
y
y = x
2
x
2
+ y
2
= 3
Рис. П4.41
Рис. П4.42
Рис. П4.43
Приложение 4. Определение условий принадлежности точки…
285
П4.14. а) Рис. П4.44; б) рис. П4.45.
x
x
2
+ y
2
= 2,5
y
y = –2
x
2
+ y
2
= 1
y
x
x = 0,5
Рис. П4.44
Рис. П4.45
П4.15. а) Рис. П4.46; б) рис. П4.47; в) рис. П4.48; г) рис. П4.49.
y
x
2
+ y
2
= 2
x
x
x
2
+ y
2
= 3
y
x
2
+ y
2
= 1
x
y
y
x
2
+ y
2
= 2
x
Рис. П4.46
Рис. П4.47
Рис. П4.48
Рис. П4.49
П4.16. а) Рис. П4.50; б) рис. П4.51; в) рис. П4.52; г) рис. П4.53.
y
x
2
+ y
2
= 4
x
y = x
y = 2
x
y
x
2
+ y
2
= 3
y = –x
x = 3
y = –3
x
2
+ y
2
= 3
y
x
y = x
y
x
y = –x
y = –1
x
2
+ y
2
= 1
Рис. П4.50
Рис. П4.51
Рис. П4.52
Рис. П4.53
Приложения
286
П4.17. а) Рис. П4.54; б) рис. П4.55; в) рис. П4.56; г) рис. П4.57.
y
x
y = sin
x
y = 0,5
x
y
y = sin
x
y = 1
Рис. П4.54
Рис. П4.55
x
y
y = sin
x
y = x
x
y
y = sin
x
y = x
Рис. П4.56
Рис. П4.57
П4.18. а) Рис. П4.58; б) рис. П4.59; в) рис. П4.60; г) рис. П4.61.
x
y
x
2
+ y
2
= 4
y = x
x
y
x
2
+ y
2
= 2
y = –x
y
x
y = –x
x
2
+ y
2
= 2
y
x
x
2
+ y
2
= 1
y = x
Рис. П4.58
Рис. П4.59
Рис. П4.60
Рис. П4.61
Приложение 4. Определение условий принадлежности точки…
287
П4.19. Рис. П4.62.
x
y
y = x
2
x
2
+ y
2
= 2
y = 4
Рис. П4.62
П4.20. а) Рис. П4.63; б) рис. П4.64; в) рис. П4.65; г) рис. П4.66.
y
x
x
2
+ y
2
= 5
8
8
x
y
5
–5
x
2
+ y
2
= 3
y
x
x
2
+ y
2
= 2
3
–3
y
x
x
2
+ y
2
= 3
4,5
–4,5
Рис. П4.63
Рис. П4.64
Рис. П4.65
Рис. П4.66
П4.21. Рис. П4.67.
x
y
y = x
2
– 2
y = –x
y = x
0
Рис. П4.67
См. также задачи 3.32 и 3.33.
П Р И Л О Ж Е Н И Е
5
Методика решения задачи С4
из демонстрационного варианта ЕГЭ
по информатике и ИКТ 2010 года
Условие
На автозаправочных станциях (АЗС) продается бензин с маркировкой 92, 95
и 98. В городе N был проведен мониторинг цены бензина на различных АЗС. На-
пишите эффективную по времени работы и по используемой памяти программу
(укажите используемую версию языка программирования, например, Borland Pascal
7.0), которая будет определять для каждого вида бензина, сколько АЗС продают его
дешевле всего. На вход программе в первой строке подается число данных о стои-
мости бензина. В каждой из последующих N строк находится информация в сле-
дующем формате:
<Компания> <Улица> <Марка> <Цена>,
где <Компания> — строка, состоящая не более чем из 20 символов без пробе-
лов, <Улица> — строка, состоящая не более чем из 20 символов без пробелов,
<Марка> — одно из чисел — 92, 95 или 98, <Цена> — целое число в диапазоне от
1000 до 3000, обозначающее стоимость одного литра бензина в копейках. <Компа-
ния> и <Улица>, <Улица> и <Марка>, а также <Марка> и <Цена> разделены ровно
одним пробелом. Пример входной строки:
Синойл Цветочная 95 2250
Программа должна выводить через пробел 3 числа — количество АЗС, продаю-
щих дешевле всего 92-й, 95-й и 98-й бензин соответственно. Если бензин какой-то
марки нигде не продавался, то следует вывести 0.
Пример выходных данных:
12 1 0
Приложение 5.
Методика решения задачи С4 из демонстрационного варианта ЕГЭ…
289
Решение
В целом можно сказать, что обсуждаемая задача представляет собой задачу нахож-
дения количества минимальных значений цены для каждой из трех марок бензина.
1
Основные положения методики решения задачи:
1. Информацию об очередной марке бензина на той или иной АЗС необходимо со-
хранить в величине строкового типа, не записывая ее в массив.
2. Из этой величины следует выделить марку бензина и ее цену на данной АЗС.
3. Полученную цену надо сравнить с минимальной ценой на соответствующую
марку бензина для рассмотренных ранее АЗС.
Сначала рассмотрим вариант решения задачи без применения массивов.
В программе на школьном алгоритмическом языке используем следующие основ-
ные величины:
N
— число данных о стоимости бензина (см. условие задачи);
строка
— величина строкового типа, о которой шла речь в п. 1 ранее;
марка
— марка бензина (величина целого типа, равная 92, 95 или 98);
цена
— его цена (величина целого типа со значениями от 1000 до 3000);
мин92
,
мин95
,
мин98
— минимальная цена соответственно на 92-й, 95-й и
98-й бензин;
кол92
,
кол95
,
кол98
— искомые значения (количество АЗС, продающих дешевле
всего 92-й, 95-й и 98-й бензин соответственно).
Обсудим методику выполнения пунктов 2 и 3.
Пункт 2. Структуру строки с информацией об очередной марке бензина на той или
иной АЗС можно представить так, как показано на рис. П5.1.
0
Название компании
С
и
...
л
Ц
в
е
...
я
9
5
2
4
1
П
Марка
П
Название улицы
П
Цена
Рис. П5.1
где П — пробел.
1
Аналогичные по сути задачи представлены в ряде других демонстрационных вариантах
ЕГЭ, а также среди вариантов заданий от разработчиков контрольно-измерительных мате-
риалов для ЕГЭ (Якушкин П. А., Лещинер В. Р., Кириенко Д. П. ЕГЭ 2010. Информатика.
Типовые тестовые задания. — М.: изд-во "Экзамен", 2010. Самое полное издание типо-
вых вариантов реальных заданий ЕГЭ: 2010: Информатика. / Авт.-сост. П. А Якушкин,
Д. М. Ушаков. — М.: Астрель, 2010 (Федеральный институт педагогических измерений).)
Приложения
290
Поэтому для выделения марки бензина и ее цены на данной АЗС следует:
1. Пропустить название компании:
номер_симв := 1 |Номер очередного символа строки
нц
|Переходим к следующему символу
номер_симв := номер_симв + 1
|пока не встретится 1-й пробел
кц_при строка[номер_симв] = " "
утв |Название компании пропущено
утв |Величина номер_симв указывает на пробел
2. Пропустить название улицы:
нц
|Переходим к следующему символу
номер_симв := номер_симв + 1
|пока не встретится 2-й пробел
кц_при строка[номер_симв] = " "
утв |Название улицы пропущено
утв |Величина номер_симв указывает на пробел
3. Пропустить второй пробел (перед маркой бензина):
номер_симв := номер_симв + 1
4. "Вырезать" два очередных символа марки и преобразовать их в число:
марка := лит_в_цел(строка[номер_симв : номер_симв + 1], успех)
5. Пропустить два очередных символа марки и пробел после нее:
номер_симв := номер_симв + 3
6. "Вырезать" четыре очередных символа цены бензина и преобразовать их в чис-
ло:
цена := лит_в_цел(строка[номер_симв : номер_симв + 3], успех)
Пункт 3. На этом этапе, зная значения величин
марка
и
цена
, нужно для каждой
марки бензина выполнить действия, которые, например, для бензина марки 95 опи-
сываются так:
|Сравниваем значения цена и мин95
если цена < мин95
то |Встретился новый минимум цены.
|Запоминаем его
мин95 := цена
|Пока он — единственный
кол95 := 1
Приложение 5.
Методика решения задачи С4 из демонстрационного варианта ЕГЭ…
291
иначе
|Проверяем, не является ли значение цена
|минимальным для данной марки бензина
если цена = мин95
то |Встретился еще один минимум цены
|на данную марку бензина.
|Учитываем это
кол95 := кол95 + 1
все
все
Вся программа решения задачи имеет вид:
алг Задача_С4_2010
нач цел N, марка, цена, мин92, мин95, мин98, кол92, кол95, кол98,
номер_симв, i, лит строка, лог успех
|Начальные значения величин кол92, кол95, кол98
кол92 := 0; кол95 := 0; кол98 := 0
|Начальные значения величин мин92, мин95, мин98
мин92 := 3001; мин95 := 3001; мин98 := 3001
|Ввод значения N
вывод нс, "Введите число данных N "
ввод N
|Ввод и обработка каждой из строк
нц для i от 1 до N
вывод нс, "Введите информацию о ",i,"-й АЗС "
ввод строка
|Обрабатываем очередную строку
|1. Пропускаем название компании
номер_симв := 1
нц
номер_симв := номер_симв + 1
кц_при строка[номер_симв] = " "
|2. Пропускаем название улицы
нц
номер_симв := номер_симв + 1
кц_при строка[номер_симв] = " "
|3. Пропускаем пробел перед маркой бензина
номер_симв := номер_симв + 1
|4. Определяем марку бензина
марка := лит_в_цел(строка[номер_симв : номер_симв + 1], успех)
Приложения
292
|5. Пропускаем марку бензина и пробел после нее
номер_симв := номер_симв + 3
|6. Определяем цену бензина
цена := лит_в_цел(строка[номер_симв : номер_симв + 3], успех)
|7. Сравниваем полученную цену с минимальной ценой
|на соответствующую марку бензина
выбор
при марка = 92:
если цена < мин92
то
мин92 := цена
кол92 := 1
иначе
если цена = мин92
то
кол92 := кол92 + 1
все
все
при марка = 95:
...
при марка = 98:
...
все
кц
|Выводим ответ
вывод нс, кол92, кол95, кол98
|Если бензина какой-то марки не было,
|соответствующее значение равно нулю
кон
Можно также вместо шести величин
мин92
,
мин95
,
мин98
,
кол92
,
кол95
и
кол98
использовать два массива с индексами от 92 до 98:
с именем
мин
— для хранения минимальных цен на бензин разной марки;
с именем
кол
— для хранения искомых значений количества АЗС, продающих
дешевле всего 92-й, 95-й и 98-й бензин соответственно.
При их использовании изменения в программе коснутся:
описания переменных величин:
цел таб кол[92:98], мин[92:98]
Приложение 5.
Методика решения задачи С4 из демонстрационного варианта ЕГЭ…
293
задания начальных значений элементов массивов:
нц для i от 92 до 98
кол[i] := 0
мин[i] := 3001
кц
сравнения выделенной в каждой строке цены с минимальной ценой на соответ-
ствующую марку бензина для рассмотренных ранее АЗС:
выбор
при марка = 92:
если цена < мин[92]
то
мин[92] := цена
кол[92] := 1
иначе
если цена = мин[92]
то
кол[92] := кол[92] + 1
все
все
при марка = 95:
если цена < мин[95]
то
мин[95] := цена
кол[95] := 1
иначе
если цена = мин[95]
то
кол[95] := кол[95] + 1
все
все
при марка = 98:
...
все
все
вывода ответа:
вывод нс, кол[92], кол[95], кол[98]
Приложения
294
Размер программы существенно сокращается, если не использовать оператор вари-
анта (выбора), а сравнивать значение
цена
со значением соответствующего элемен-
та массива
мин
(с индексом
марка
):
|Сравниваем полученную цену с минимальной ценой
|на соответствующую марку бензина:
если цена < мин[марка]
то
мин[марка] := цена
кол[марка] := 1
иначе
если цена = мин[марка]
то
кол[марка] := кол[марка] + 1
все
все
...
Небольшую экономию размера программы дает использование индексов от 2 до 8
вместо индексов от 92 до 98. В этом случае в марке бензина следует выделять толь-
ко второй символ-цифру. При этом программа на языке Паскаль может быть до-
полнительно упрощена за счет того, что значениями индексов элементов массивов
kol
и
min
в этом языке могут быть данные символьного типа:
var kol, min: array ['2'..'8'] of integer;
Это позволит отказаться от преобразования символов "2", "3", ..., "8" в число.
Но более существенное улучшение программы на языке Паскаль дает то обстоя-
тельство, что пропустить название компании и название улицы можно, используя
оператор
read
c параметром символьного типа:
repeat
read(c);
until c = ' '; {Пропущено название компании}
repeat
read(c);
until c = ' '; {Пропущено название улицы}
а получить числовые значения марки бензина и ее цены на данной АЗС можно,
применив после этого оператор
readln(marka, zena)
:
for i := 1 to N do
begin
repeat
read(c);
Приложение 5.
Методика решения задачи С4 из демонстрационного варианта ЕГЭ…
295
until c = ' ';
repeat
read(c);
until c = ' ';
readln(marka, zena);
if zena < min[marka] then ...
В заключение заметим следующее. Если обработка информации об очередной мар-
ке бензина на той или иной АЗС проводится после считывания всей строки (а в
программах на школьном алгоритмическом языке и на языке Бейсик можно сделать
только так), то получить значение цены и марки бензина можно без использования
цикла — ведь нам известно "местоположение" соответствующих значений в каж-
дой заданной строке:
1
|1. Определяем цену бензина,
|"вырезая" и преобразуя 4 последних символа строки
цена := лит_в_цел(строка[длин(строка) - 3:длин(строка)], успех)
|2. Определяем марку бензина,
|"вырезая" и преобразуя 2 соответствующих символа строки
марка := лит_в_цел(строка[длин(строка) - 6:длин(строка) - 5], успех)
|3. Сравниваем полученную цену с минимальной ценой
|на соответствующую марку бензина
Приведем также программу решения задачи на языке Паскаль и комментарии
к ней, представленные в демонстрационном варианте ЕГЭ.
2
Содержание верного ответа и указания по оцениванию (допускаются иные
формулировки ответа, не искажающие его смысла).
Программа читает все входные данные один раз, не запоминая их в массиве, размер
которого соответствует числу АЗС или диапазону цен. Во время чтения данных оп-
ределяются минимальная цена каждой марки бензина и количество АЗС, продаю-
щих его по этой цене. Для этого используются 6 переменных или соответствующие
массивы.
Баллы начисляются только за программу, которая решает задачу хотя бы для одно-
го частного случая (например, когда для каждой марки бензина минимальная цена
отмечена ровно на одной АЗС).
Ниже приведены примеры решения задания на языках Бейсик и Паскаль. Допуска-
ются решения, записанные на других языках программирования. При оценивании
решений на других языках программирования необходимо учитывать особенности
этих языков программирования.
1
См. ранее структуру обрабатываемой строки с информацией об очередной марке бензина
на той или иной АЗС.
2
Стиль изложения сохранен.
Приложения
296
Пример правильной и эффективной программы на языке Паскаль:
var min, ans: array[92..98] of integer; c: char; i, k, N, b: integer;
begin
for i:=92 to 98 do
begin
min[i]:=3001; {допустимо и другое число, большее 3000}
ans[i]:=0;
end;
readln(N);
for i:=1 to N do
begin
repeat
read(c);
until c=' '; {считана компания}
repeat
read(c);
until c=' '; {считана улица}
readln(k,b);
if min[k] > b then
begin
min[k]:=b;
ans[k]:=1
end else
if min[k] = b then ans[k]:=ans[k]+1;
end;
{если бензина какой-то марки не было,
ans[i] осталось равным 0}
writeln(ans[92],' ', ans[95],' ', ans[98])
end.
Document Outline - Предисловие
- Глава 1. Ввод и вывод числовых данных. Оператор присваивания
- Простейшие программы. Арифметические выражения
- Вычисления по известным формулам
- Часто используемые эффективные алгоритмы
- Глава 2. Целочисленная арифметика
- Простейшие задачи
- Выделение цифр в записи числа
- Нахождение целого числа по информации о его цифрах
- Задачи повышенной сложности
- Глава 3. Величины логического типа
- Вычисление логических выражений
- Составление логических выражений
- Глава 4. Условный оператор
- Полный условный оператор
- Целочисленная арифметика и условный оператор
- Использование сложных условий
- Неполный и вложенные условные операторы
- Оператор варианта (выбора)
- Задачи повышенной сложности
- Глава 5. Оператор цикла с параметром
- Организация вывода данных по требуемому формату
- Обработка фиксированной последовательности чисел
- Обработка данных во время ввода
- Рекуррентные соотношения
- Расчет площади под кривой
- Разные задачи
- Глава 6. Операторы цикла с условием
- Обработка числовых последовательностей
- Использование условного оператора в теле операторов цикла с условием
- Использование условного оператора после операторов цикла с условием
- Использование условного оператора в теле операторов цикла с условием и после него
- Разные задачи
- Глава 7. Сочетание оператора цикла и условного оператора
- Простейшие задачи
- Организация вычислений во время ввода данных
- Определение максимального и минимального значений во время ввода данных
- Использование условного оператора после оператора цикла
- Использование условного оператора в теле оператора цикла с условием и после него
- Глава 8. Вложенные циклы
- Глава 9. Строки символов
- Простейшие задачи
- Работа с символами строки
- Обработка строк с использованием оператора цикла с параметром
- Обработка строк с использованием операторов цикла с условием
- Изменение исходных строковых величин
- Обработка цифр в строке
- Задачи повышенной сложности
- Глава 10. Функции и процедуры
- Функции
- Процедуры
- Рекурсия
- Глава 11. Одномерные массивы
- Инициализация массива и вывод его на экран
- Обработка элементов массива
- Использование условий для изменения элементов массива и вывода их на экран
- Расчет суммы или количества элементов массива, удовлетворяющих некоторому условию
- Поиск максимума и минимума
- Изменение исходного массива
- Обработка массива с использованием операторов цикла с условием
- Работа с двумя и тремя массивами
- Глава 12. Двумерные массивы
- Простейшие задачи
- Заполнение и вывод массива нестандартными методами
- Расчетные задачи
- Нахождение максимума и минимума
- Проверка условия после выполнения расчетов
- Обработка массива с использованием операторов цикла с условием
- Работа с квадратными массивами
- Изменение исходного массива
- Работа с несколькими массивами
- Двумерные символьные массивы
- Глава 13. Массивы величин типа "запись"
- Глава 14. Типизированные файлы
- Запись в типизированный файл
- Чтение из типизированного файла
- Простейшая обработка элементов файла
- Изменение исходного файла
- Работа с несколькими файлами
- Глава 15. Текстовые файлы
- Запись в текстовый файл
- Чтение, удаление и вставка информации в текстовый файл
- Поиск в текстовом файле
- Работа с несколькими файлами
- Глава 16. Случайные числа
- Простейшие задачи
- Моделирование случайных величин
- Использование метода Монте-Карло
- Глава 17. Сортировка массивов и ее использование в программах
- Приложения. Материалы для подготовки к Единому государственному экзамену по информатике и ИКТ
- Приложение 1. Задачи на определение значений переменных величин
- Приложение 2. Типовые задачи обработки элементов заданной числовой последовательности
- Задачи для самостоятельной работы
- Приложение 3. Работа с одномерными числовыми массивами
- Методы заполнения одномерных числовых массивов
- Заполнение массива разными значениями, не подчиняющимися общему закону
- Заполнение массива одинаковыми значениями
- Заполнение массива последовательностью чисел, закон построения которой известен
- Заполнение массива случайными значениями
- Задачи для самостоятельной работы
- Типовые задачи обработки одномерных числовых массивов
- Простейшие методы сортировки числовых массивов
- Сортировка обменом
- Сортировка выбором
- Задачи для самостоятельной работы
- Приложение 4. Определение условий принадлежности точки с заданными координатами заштрихованной области
- Приложение 5. Методика решения задачи С4 из демонстрационного варианта ЕГЭ по информатике и ИКТ 2010 года
Достарыңызбен бөлісу: |