пятница, 16 октября 2015 г.

Задания для школьного этапа олимпиады по информатике в 2015-2016 учебном году для 9 - 11 классов ( с пояснениями решений)

(максимальное количество баллов — 20)

1.       Для каждого ученика класса определяют рейтинг в баллах по определенным критериям. Определить общий рейтинг класса, если в нем N учащихся.
Задание:
- построить информационную модель;
- записать словесный алгоритм;
- составить графическую схему для созданного алгоритма;
- выполнить алгоритм для таких данных: в классе 4 ученика, которые имеют рейтинг 3, 5, 5, 2 балла соответственно.
(5 баллов)

2.       Три приятеля были свидетелями нарушения правил дорожного движения. Номер автомобиля — четырехзначное число — никто не запомнил. Из их показаний следует, что номер делится на 2, на 7 и на 11, в записи номера участвуют только две цифры, сумма цифр номера равна 30. Напишите программу для определения номера машины.
 (5 баллов)

3.       Возведите вещественное число x в целую положительную степень y.
 (5 баллов)


4.       Задан массив А[1..n]. Расположите элементы в массиве в порядке возрастания.

(5 баллов)


Задание1

Пример оформления решения

Задание 3






Задание2



Для решения задачи составим словесный алгоритм.
1) Самое маленькое четырёхзначное число 1000, каждое следующее будем получать прибавляя 1, и так до 9999 (самое большое четырехзначное);
 2) Чтобы проверить делится ли проверяемое число на 2, 7, 11 будем использовать функцию языка Паскаль mod. Её действие заключается в следующем: 
например, 1000 mod 2=0, 1000 mod 7=6, получаем остаток от деления , поэтому, если значение =0, значит число кратно тому числу, на которое делим. Так 9999 mod 2=1, 
9999 mod 11=0.
3) В условии задачи есть ещё два условия, для проверки которых необходимо четырёхзначное число разбить на цифры. Как это сделать? Воспользуемся ещё одной замечательной функцией языка Паскаль  div  - целочисленное деление. Так, например, 1234 div 1000=1, 234 div 100=2, 34 div 10=3.

Итак, 1234 разбиваем на цифры так:
1234 div 1000 =1
1234 -1*1000=234
234 div 100=2
234 - 2*100=34
34 div 10=3
34-3*10=4
4) Когда все четыре цифры выделены, необходимо проверять условие: сумма цифр числа должна быть равна 30
5) Самое трудное, что в этой задаче есть, наверное, - как проверить, что в записи данного четырёхзначного числа только две разные цифры, например, 7788 или 1011?
Обозначим С1-первая цифра числа, С2 - вторая, аналогично С3 и С4.
В этом случае будем использовать логические операции: логическое сложение и логическое умножение
Логическое умножение

Логическое сложение
Первое Логическое высказывание
С1=С2
Второе Логическое высказывание
С1=С3
И

Первое Логич. высказ.
А
Второе Логич. высказ.
В
ИЛИ
Истина
Истина
Истина
Истина
Истина
Истина
Истина
Ложь
Ложь
Истина
Ложь
Истина
Ложь
Истина
Ложь
Ложь
Истина
Истина
Ложь
Ложь
Ложь
Ложь
Ложь
Ложь
На языке Паскаль эти операции записываются как and (в русском варианте И) и or (в русском варианте ИЛИ). 
Дальше заметим, чтобы выполнялось условие задачи: число записывается только двумя разными цифрами, достаточно  рассмотреть 6 разных случаев,например:
7788 (1 случай); 7887  (2 случай); 7878(3 случай); 
7778  (4 случай); 7787 (5 случай);  7877(6 случай);
Тогда последнее условие задачи можно записать в виде логического высказывания:

(С1=С2 И С3=С4) ИЛИ  (С1=С4 И С2=С3) ИЛИ  (С1=С3 И С2=С4) ИЛИ  (С1=С2 И С1=С3) ИЛИ  (С1=С2 И С1=С4) ИЛИ  (С1=С4 И С1=С3)