Практика 2014
.docxГУАП
КАФЕДРА №
ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ
ПРЕПОДАВАТЕЛЬ
|
|
|
|
|
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
ОТЧЁТ О ВЫПОЛНЕНИИ ВЫЧИСЛИТЕЛЬНОЙ ПРАКТИКИ
|
Номер варианта: 12 |
|
|
|
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ ГР. |
4314 |
|
|
|
Логачёв Е.П. |
|
|
|
подпись, дата |
|
инициалы, фамилия |
Санкт-Петербург 2014
Задание 1. Составить алгоритм действий и решить (Вариант 1)
Вариант 1: Два игрока играют в следующую игру. Перед ними лежат две кучки камней, в первой из которых 1, а во второй — 2 камня. У каждого игрока неограниченно много камней. Игроки ходят по очереди. Ход состоит в том, что игрок или увеличивает в 3 раза число камней в какой-то куче, или добавляет 2 камня в какую-то кучу. Выигрывает игрок, после хода которого общее число камней в двух кучах становится не менее 17 камней. Кто выигрывает при безошибочной игре обоих игроков — игрок, делающий первый ход, или игрок, делающий второй ход? Каким должен быть первый ход выигрывающего игрока? Ответ обоснуйте.
Решение:
Игра продолжается минимум два хода, максимум
четыре. Из таблицы ясно , что второй игрок на своём втором ходу выигрывает . Если же второй игрок не выиграл ,то может выиграть первый игрок. Таким образом, при правильной игре выиграет второй игрок при любом ходе первого игрока.
Ходы |
Возможные комбинации ходов |
|||||
0 |
1 2 |
|||||
1 |
3 6 |
3 6 |
3 4 |
3 4 |
2 6 |
2 6 |
2 |
9 18 |
9 18 |
5 6 |
9 12 |
6 8 |
6 8 |
3 |
|
7 8 |
|
18 24 |
8 10 |
|
4 |
|
9 10 |
|
Ответ: При правильной игре выиграет второй игрок при любом ходе первого игрока.
Задание 2. Составить алгоритм действий и решить (Вариант 2)
Вариант 2: Два игрока играют в следующую игру. На координатной плоскости в точке с координатами (-2;-1) стоит фишка. Игроки ходят по очереди. Ход состоит в том, что игрок перемещает фишку из точки с координатами (x,y) в одну из трех точек: (x+3;y), (x,y+4) или (x+2,y+2). Выигрывает тот игрок, после хода которого расстояние по прямой от фишки до начала координат (0,0) больше 9 единиц. Кто выигрывает — игрок, делающий ход первым, или игрок, делающий ход вторым?
Решение:
1)из каждой ситуации в этой игре возможно три продолжения, поэтому дерево получается троичным
2)по теореме Пифагора расстояние L от точки с координатами (x;y) до начала координат – это квадратный корень из суммы квадратов координат:; чтобы избавиться от вычисления квадратного корня, нужно перейти от заданного условия к равносильному условию в целых числах:
3)в начальный момент, условие не выполнено
4)первый игрок имеет три варианта хода, запишем их в таблицу, указывая для каждого положения координаты (в скобках) и значение;
0 |
1 |
2 |
3 |
||||||
(x;y) |
(x;y) |
(x;y) |
(x;y) |
||||||
(-2;-1) |
5 |
(1;-1) |
2 |
(-2;3) |
13 |
(0;1) |
1 |
5)видим, что одним ходом первый игрок может выиграть сразу;
6)построим следующий столбец таблицы (ход второго игрока):
0 |
1 игрок |
2 игрок |
||||
(x;y) |
(x;y) |
(x;y) |
||||
(-2;-1) |
5 |
(-1;1) |
2 |
(2;1) |
5 |
|
(-1;5) |
26 |
|||||
(1;3) |
10 |
|||||
(0;1) |
1 |
(3;1) |
10 |
|||
(0;5) |
25 |
|||||
(2;3) |
13 |
7) второй игрок может выиграть большинстве числа ходов-
восьми из девяти;
8)предположим, что на втором ходу ещё никто не выиграл ,тогда
следует третий ход;
9) строим таблицу для третьего хода (игрок 1)
0 |
1 игрок |
2 игрок |
1 игрок |
|||||
(x;y) |
(x;y) |
(x;y) |
(x;y) |
|||||
(-2;-1) |
5 |
(-1;1) |
2 |
(2;1) |
5 |
(5;1) |
26 |
|
(2;5) |
29 |
|||||||
(4;3) |
25 |
10)как видим дальнейшая игра невозможна ,так как первый игрок выигрывает;
Из таблиц ясно , что второй игрок на своём втором ходу выигрывает
в восьми из девяти случаев .
Если же второй игрок не выиграл ,то однозначно выигрывает первый игрок.
Таким образом, при правильной игре выиграет второй игрок при любом ходе первого игрока.
Ответ: При правильной игре выиграет второй игрок при любом ходе первого игрока.
Задание 3. (Вариант 3) Написать алгоритм программы, при выполнении которой с клавиатуры считываются координаты точки на плоскости (x1,y1 – действительные числа) и определяется принадлежность точки некоторой области, включая ее границы. Область ограничена графиком y=f(x) и прямыми y= a , x=b и х=c.
Вариант 3 : f(x)=cos(x)-0.25, a=0, b=0, c=3.5.
По заданию можно судить, что для решения задачи нужно ограничить область плоскости некоторыми функциями (см. рис 1).
Рис. 1. График искомой области.
Для проверки попадания точки в две данные фигуры, последовательно проверим каждую из границ и в случае если все границы соблюдены мы можем быть уверены, что точка лежит в данных областях. Итак, ограничивать область сверху и снизу будет функция , левой границей – , правой – , а верхней . Теперь достаточно составить алгоритм и написать простенькую программу.
Алгоритм для выполнения задачи №3.
Текст программы на C/C++:
#include <stdio.h>
#include <math.h>
int main()
{
float x1,y1;
scanf("%f %f", &x1, &y1);
if ((x1>=0) && (x1<=3.5) && ( ((y1>=0) && (y1<=cos(x1)-0.25)) || ((y1<=0) && (y1>=cos(x1)-0.25)) ))
printf("(%.2f,%.2f) - located on given area", x1, y1);
}
Вывод: Языки программирования высокого уровня очень хорошо подходят для решения прикладных и математических задач.
Задание 4. (Вариант 4) Вывести все десятичные числа A (100<А<500), в двоичной записи которых число единиц превосходит число нулей.
Решение: Для решения данной задачи отлично подойдет один из языков программирования высокого уровня. Задача сводится к тому во время отработки рекуррентной формулы нахождения двоичного числа найти количество единиц и нулей, а проверка условия займет не более двух строк. Все это повторить используя цикл с параметром.
Алгоритм для выполнения задачи №4.
Текст программы на C/C++:
#include <stdio.h>
int main()
{
for(int i=100; i<501; i++)
{
int k=1, t=0, f=0, d=i;
while (d)
{
if((d%2)==0)
f++;
else
t++;
d/=2;
k*=10;
}
if(t>f)
printf("%3i ", i);
}
}
Вывод: Языки программирования высокого уровня очень хорошо подходят для решения прикладных и математических задач.
Задание 5. (Вариант 5) Решить логическую задачу. Примеры выполнения задания приведены в Приложении.
Вариант 5. Дина, Соня, Коля, Рома и Миша учатся в институте. Их фамилии – Бойченко, Карпенко, Лысенко, Савченко и Шевченко. Рома никогда не видел своей мамы. Родители Дины никогда не встречались с родителями Коли. Студенты Шевченко и Бойченко играют в одной баскетбольной команде. Услышав, что родители Карпенко собираются поехать в город, мать Шевченко пришла к матери Карпенко и попросила, чтобы та отпустила своего сына к ним на вечер, но оказалось, что отец Коли уже договорился с родителями Карпенко и пригласил их сына к Коле. Отец и мать Лысенко – хорошие друзья родителей Бойченко. Все четверо очень довольны, что их дети собираются пожениться. Установите имя и фамилию каждого из молодых людей и девушек.
Решение:
Имеется пять утверждений:
-
Рома никогда не видел своей мамы.
-
Родители Дины никогда не встречались с родителями Коли.
-
Студенты Шевченко и Бойченко играют в одной баскетбольной команде.
-
Услышав, что родители Карпенко собираются поехать в город, мать Шевченко пришла к матери Карпенко и попросила, чтобы та отпустила своего сына к ним на вечер, но оказалось, что отец Коли уже договорился с родителями Карпенко и пригласил их сына к Коле.
-
Отец и мать Лысенко – хорошие друзья родителей Бойченко.
Составим таблицу:
Фамилии Имя |
Шевченко |
Карпенко |
Савченко |
Бойченко |
Лысенко |
Рома |
- |
- |
+ |
- |
- |
Коля |
- |
- |
- |
- |
+ |
Соня |
- |
- |
- |
+ |
- |
Дина |
+ |
- |
- |
- |
- |
Миша |
- |
+ |
- |
- |
- |
Рома никогда не видел своей мамы. Учитывая это обстоятельство, можно сделать вывод, что Рома — не Карпенко, не Шевченко, не Лысенко и не Бойченко. Следовательно, он Савченко. Отметим это в таблице. Учтём и то, что Карпенко — юноша, следовательно, он — не Дина, не Соня, и к тому же — не Коля («отец Коли уже договорился с родителями Карпенко»). Следовательно, его зовут Миша. Занесём в таблицу и этот вывод.
Как известно, в одной баскетбольной команде играют либо одни юноши, либо одни девушки. Пара «Шевченко + Бойченко» мужской быть не может, так как в качестве возможных претендентов на эти две фамилии у нас остались две девушки и один юноша. Следовательно, Шевченко и Бойченко — девушки. Значит, фамилия Коли — Лысенко. Это легко установить, взглянув на таблицу.
Остается выяснить имя и фамилию каждой из девушек. Сопоставим два факта: «Родители Дины никогда не встречались с родителями Коли (мы уже знаем, что его фамилия — Лысенко)» и «Родители Лысенко дружат с родителями Бойченко». Ясно, что Дина — не Бойченко. Следовательно, ее фамилия Шевченко, а фамилия Сони — Бойченко.
Ответ:
Рома-Савченко;
Коля-Лысенко;
Миша-Карпенко;
Соня-Бойченко;
Дина-Шевченко.
Вывод:
Развил и усовершенствовал навыки в областях теории алгоритмизации, практического решения прикладных информационных задач и использования современной вычислительной техники. Ознакомился с возможностями вычислительной лаборатории кафедры моделирования вычислительных и электронных систем.