Систематизация решений задач по информатике (15.2 ОГЭ)

  • docx
  • 09.11.2020
Публикация в СМИ для учителей

Публикация в СМИ для учителей

Бесплатное участие. Свидетельство СМИ сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Систематизация решений задач по информатике (15.2 ОГЭ).docx

Систематизация решений задач по информатике 15.2 ОГЭ (на Питон)

 

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

В данной статье хочу систематизировать различные задачи, что, надеюсь, поможет учащимся при подготовке к ОГЭ.

I

Итак, как правило, учащимся предлагается решить задачу, которая будет находить сумму, количество, максимум или минимум среди вводимых элементов, удовлетворяющих какому-либо условию.

Ввод данных осуществляется с помощью цикла с параметром (FOR), если по условию известно количество вводимых чисел или с помощью цикла с предусловием (WHILE), если количество вводимых чисел неизвестно, а их ввод заканчивается при вводе нуля.

Стандартные алгоритмы выглядят так[1]:

Нахождение сумм:

FOR

WHILE

s=0;

for i in range(N):

  x=int(input())

  if <условие>:

     s+=x

print(s)

x=int(input())

s=0

while x!=0:

  if <условие>:

     s+=x

  x=int(input())

print(s)

 

Нахождение количества:

FOR

WHILE

k=0;

for i in range(N):

  x=int(input())

  if <условие>:

     k+=1

print(k)

x=int(input())

k=0

while x!=0:

  if <условие>:

     k+=1

  x=int(input())

print(k)

 

Нахождение минимума:

FOR

WHILE

m=10000;

for i in range(N):

  x=int(input())

  if x<m:

     m=x

print(m)

 

x=int(input())

m=10000

while x!=0:

  if x<m:

     m=x

  x=int(input())

print(m)

 

Нахождение максимума:

FOR

WHILE

m=-10000;

for i in range(N):

  x=int(input())

  if x>m:

     m=x

print(m)

 

 

x=int(input())

m=-10000

while x!=0:

  if x>m:

     m=x

  x=int(input())

print(m)

 

При решении данных задач надо не забыть вывести найденный результат и правильно инициализировать переменные (при нахождении максимума или минимума обычно ориентируемся на заданный по условию диапазон для исходных данных).

Ниже перечислим условия, которые чаще всего встречаются в заданиях №15.2. Иногда по условию требуется использовать несколько условий, которые можно группировать с помощью and/or.

Условие (русский язык)

Условие (Питон)

Отобрать чётные элементы

if x % 2 == 0:

Отобрать нечётные элементы

if x % 2 != 0:

Отобрать элементы, оканчивающиеся на y

if x % 10 == y:

Отобрать элементы, кратные y

if x % y == 0:

Отобрать двузначные элементы

if x > 9 and x < 100:

Отобрать положительные элементы

if x > 0:

Отобрать элементы большие b, меньшие c

if b<x<c:

 

Итак, комбинируя различные условия и используя основные алгоритмы, можно решить большинство заданий №15.2.

II

Иногда в задачах требуется вывести найденное значение или вывести «NO», если такого значения не удалось найти среди введённых чисел последовательности.

Ниже приведены условия таких задач, взятых с сайта Решу ОГЭ

FOR

 

15.2 На­пи­ши­те программу, ко­то­рая в по­сле­до­ва­тель­но­сти на­ту­раль­ных чисел опре­де­ля­ет ко­ли­че­ство чисел, крат­ных 6 и окан­чи­ва­ю­щих­ся на 4 или определяет, что таких чисел нет. Про­грам­ма по­лу­ча­ет на вход ко­ли­че­ство чисел в последовательности, а затем сами числа. Ко­ли­че­ство чисел не пре­вы­ша­ет 1000. Введённые числа по мо­ду­лю не пре­вы­ша­ют 30 000. Про­грам­ма долж­на вы­ве­сти ко­ли­че­ство чисел, крат­ных 6 и окан­чи­ва­ю­щих­ся на 4 или вывести «NO», если таких чисел нет.

 Входные данные

Выходные данные

3

24

25

54

2

Входные данные

Выходные данные

3

17

25

33

NO

 

WHILE

 

15.2 На­пи­ши­те программу, ко­то­рая в по­сле­до­ва­тель­но­сти на­ту­раль­ных чисел опре­де­ля­ет сумму всех чисел, крат­ных 6 и окан­чи­ва­ю­щих­ся на 4 или сообщает, что таких чисел нет. Про­грам­ма по­лу­ча­ет на вход на­ту­раль­ные числа, ко­ли­че­ство введённых чисел неизвестно, по­сле­до­ва­тель­ность чисел заканчива­ет­ся чис­лом 0 (0 — при­знак окон­ча­ния ввода, не вхо­дит в последовательность). Ко­ли­че­ство чисел не пре­вы­ша­ет 100. Введённые числа не пре­вы­ша­ют 300. Про­грам­ма долж­на вы­ве­сти сумму всех чисел, крат­ных 6 и окан­чи­ва­ю­щих­ся на 4 или вывести «NO», если таких чисел нет.

 

 Пример ра­бо­ты программы: 

Входные данные

Выходные данные

54

28

72

34

24

0

78

 

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

if k==0:

     print (‘NO’)

else:

     print (k)

 

III

Есть ещё одна разновидность задач, когда требуется вывести не только ответ на  основной вопрос, но и на дополнительный.

 

MIN/MAX

 

15.2 Напишите программу, ко­то­рая в по­сле­до­ва­тель­но­сти на­ту­раль­ных чисел опре­де­ля­ет ми­ни­маль­ное число, крат­ное 3. Про­грам­ма по­лу­ча­ет на вход ко­ли­че­ство чисел в последовательности, а затем сами числа. В по­сле­до­ва­тель­но­сти все­гда име­ет­ся число, крат­ное 3. Ко­ли­че­ство чисел не пре­вы­ша­ет 1000. Введённые числа не пре­вы­ша­ют 30 000. Про­грам­ма долж­на вы­ве­сти минимальное число, крат­ное 3. Если в последовательности хотя бы од­но число было мень­ше 5, вы­ве­ди­те «YES», иначе вы­ве­ди­те «N0».

Пример ра­бо­ты программы:

 

Входные данные

Выходные данные

3
21
12
31

12
NO

 

В таком случае рекомендуется ввести дополнительную переменную (так называемый «флажок»), которая будет запоминать: встречались ли такие значения среди вводимых чисел последовательности.

Решение для приведённой выше задачи:

n=int(input())

m=30001

f=0 # флажок

for i in range(n):

   x=int(input())

   if x<m and x % 3 ==0:

      m=x

   if x<5:

      f=1 #запоминаем, что в последовательности было число удовлетворяющее условию

print(m)

if f==0:

   print('NO')

else:

   print('YES')


IV

Заканчивая статью, хочу привести ещё несколько интересных условий задач с того же сайта Решу ОГЭ. Это задачи из жизненных ситуаций, а не на обработку абстрактных цифр. Данная подборка должна быть обязательно разобрана учениками, планирующими решать задачу 15.2

1. На­пи­ши­те про­грам­му для ре­ше­ния сле­ду­ю­щей задачи. Де­вя­ти­класс­ни­ки участ­во­ва­ли в вик­то­ри­не по математике. Не­об­хо­ди­мо было от­ве­тить на 20 вопросов. По­бе­ди­те­лем вик­то­ри­ны счи­та­ет­ся участник, пра­виль­но от­ве­тив­ший на наи­боль­шее ко­ли­че­ство вопросов. На сколь­ко во­про­сов по­бе­ди­тель от­ве­тил правильно? Если есть участ­ни­ки викторины, ко­то­рые не смог­ли дать пра­виль­ный ответ ни на один из вопросов, вы­ве­ди­те YES, иначе вы­ве­ди­те NO. Гарантируется, что есть участники, пра­виль­но от­ве­тив­шие хотя бы на один из вопросов. Про­грам­ма по­лу­ча­ет на вход число участ­ни­ков вик­то­ри­ны N (1 ≤ N ≤ 50), затем для каж­до­го участ­ни­ка вво­дит­ся ко­ли­че­ство вопросов, на ко­то­рые по­лу­чен пра­виль­ный ответ.

 

Пример ра­бо­ты программы:

 

Входные данные

Выходные данные

4

15

12

0

17

17

YES

 

2. Напишите про­грам­му для ре­ше­ния сле­ду­ю­щей задачи. Ка­ме­ра на­блю­де­ния ре­ги­стри­ру­ет в ав­то­ма­ти­че­ском ре­жи­ме ско­рость про­ез­жа­ю­щих мимо неё автомобилей, округ­ляя зна­че­ния ско­ро­сти до целых чисел. Не­об­хо­ди­мо опре­де­лить мак­си­маль­ную за­ре­ги­стри­ро­ван­ную ско­рость автомобиля. Если ско­рость хотя бы од­но­го ав­то­мо­би­ля была мень­ше 30 км/ч, вы­ве­ди­те «YES», иначе вы­ве­ди­те «N0».

Программа по­лу­ча­ет на вход число про­ехав­ших ав­то­мо­би­лей N (1 < N < 30), затем ука­зы­ва­ют­ся их скорости. Зна­че­ние ско­ро­сти не может быть мень­ше 1 и боль­ше 300. Программа долж­на сна­ча­ла вы­ве­сти мак­си­маль­ную скорость, затем YES или NO.

 

Пример ра­бо­ты программы:

 

Входные данные

Выходные данные

4
74
69
63
66

74
NO

 

3. Напишите про­грам­му для ре­ше­ния сле­ду­ю­щей задачи. Ка­ме­ра на­блю­де­ния ре­ги­стри­ру­ет в ав­то­ма­ти­че­ском ре­жи­ме ско­рость про­ез­жа­ю­щих мимо неё автомобилей, округ­ляя зна­че­ния ско­ро­сти до целых чисел. Не­об­хо­ди­мо определить:

 

1) разность мак­си­маль­ной и ми­ни­маль­ной ско­ро­стей автомобилей;

2) количество автомобилей, ско­рость ко­то­рых не пре­вы­ша­ла 30 км/ч.

 

Программа по­лу­ча­ет на вход число про­ехав­ших ав­то­мо­би­лей N (1 ≤ N ≤ 30), затем ука­зы­ва­ют­ся их скорости. Зна­че­ние ско­ро­сти не может быть мень­ше 1 и боль­ше 300. Про­грам­ма долж­на сна­ча­ла вы­ве­сти раз­ность мак­си­маль­ной и ми­ни­маль­ной ско­ро­стей автомобилей, затем ко­ли­че­ство автомобилей, ско­рость ко­то­рых не пре­вы­ша­ла 30 км/ч.

 

Пример ра­бо­ты программы:

 

Входные данные

Выходные данные

4
74
69
63
96

33
0

 

4. Напишите программу для решения следующей задачи. На контрольной по алгебре ученикам 9 класса было предложено  10 примеров. Неудовлетворительная оценка выставляется, если правильно решено менее половины примеров. Сколько неудовлетворительных оценок было получено учениками. Если хотя бы один из учеников правильно решил все задачи, выведите YES, иначе – выведите NO. Программа получает на вход количество учеников в классе N (1<=N<=30), затем для каждого ученика вводится количество правильно решённых примеров.

Пример работы программы

Входные данные

Выходные данные

4

3

9

2

8

2

NO

 

5. Напишите программу для решения следующей задачи. Ученики 4 класса вели дневники наблюдения за погодой и ежедневно записывали дневную температуру. Найдите среднюю температуру для дней, когда столбик термометра поднимался выше нуля градусов. Определите количество таких дней. Гарантируется, что за время наблюдения хотя бы в один из дней температура поднималась выше нуля градусов. Программа получает на вход количество дней, в течение которых проводилось наблюдение N (1 ≤ N ≤ 31), затем для каждого дня вводится температура.

 

Пример работы программы:

Входные данные

Выходные данные

4

–5

12

–2

8

10.0

2

 

6. Напишите программу для решения следующей задачи. Участники парусной регаты стартовали одновременно. На финише фиксировалось время прохождения маршрута каждой яхтой (в часах и минутах). Определите время победителя регаты (в часах и минутах). Известно, что соревнования проходили в течение 12 часов. Программа получает на вход количество яхт, принимавших участие в регате N (1 ≤ N ≤ 100), затем для каждой яхты вводится два числа: часы и минуты, затраченные на прохождение маршрута.

 

Пример работы программы:

Входные данные

Выходные данные

2

3 25

2 50

2 50

 

7. Напишите программу для решения следующей задачи. На соревнованиях по бегу на 5000 метров для выхода в финал необходимо показать время не более 18 минут 30 секунд.

Сколько спортсменов по результатам соревнований вышли в финал? Программа получает на вход количество спортсменов, принимавших участие в соревнованиях (1 ≤ N ≤ 100), затем для каждого спортсмена вводится два числа: минуты и секунды – время, показанное на дистанции.

 

Пример работы программы:

Входные данные

Выходные данные

2

17 15

19 20

1

 

8. На­пи­ши­те про­грам­му для ре­ше­ния сле­ду­ю­щей задачи. В мотокроссе участвовало N мотоциклистов. На финише фиксировалось время заезда каждого из них (в часах и минутах). Определите время победителя мотокросса (в часах и минутах). Известно, что соревнования проходили в течение 10 часов. Программа получает на вход количество участников N (1 ≤ N ≤ 100), затем для каждого мотоциклиста вводится два числа: часы и минуты, затраченные на проезд трассы.

 

Пример работы программы:

Входные данные

Выходные данные

2

3 25

2 50

2 50

 


 

Скачано с www.znanio.ru



[1] Здесь и далее будут приведены коды на Python