z9411_КафкаРС_учебная_практика
.docxМИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
федеральное государственное автономное образовательное учреждение высшего образования
«Санкт–Петербургский государственный университет аэрокосмического приборостроения»
Кафедра №41 Вычислительных систем и программирования
ОТЧЁТ ПО ПРАКТИКЕ
ЗАЩИЩЁН С ОЦЕНКОЙ
Руководитель
Ст. преподаватель |
|
|
|
Васильевский А. С. |
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
ОТЧЁТ ПО ПРАКТИКЕ
вид практики |
Учебная |
|
|
тип практики |
|
|
|
на тему индивидуального задания |
Применение теории алгоритмов для решения |
|
|
математических и логических задач |
|||
|
выполнен |
|
фамилия, имя, отчество обучающегося в творительном падеже |
по направлению подготовки |
09.03.03 |
|
Прикладная информатика |
|
код |
|
наименование направления |
|
|||
наименование направления
|
|||
направленности |
|
|
|
|
код |
|
наименование направленности |
|
|||
наименование направленности |
Обучающийся группы № |
Z9411 |
|
|
|
Кафка Р. С. |
|
номер |
|
подпись, дата |
|
инициалы, фамилия |
Санкт–Петербург 2020
ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ
на прохождение учебной практики обучающегося направления подготовки/ специальности
Фамилия, имя, отчество обучающегося: Кафка Роман Сергеевич
Группа: z9411
Тема индивидуального задания:
Применение теории алгоритмов для решения математических и логических задач
Исходные данные:
Номер варианта: 1 задача – 7; 2 задача – 9; 3 задача – 5; 4 задача – 4; 5 задача – 1
Содержание отчетной документации:
индивидуальное задание;
отчёт, включающий в себя:
титульный лист;
материалы о выполнении индивидуального задания (содержание определяется кафедрой);
выводы по результатам практики;
список использованных источников.
отзыв руководителя от профильной организации (при прохождении практики в профильной организации).
Срок представления отчета на кафедру: «___» ______________201_ г.
Руководитель практики
должность, уч. степень, звание подпись, дата инициалы, фамилия
СОГЛАСОВАНО
Руководитель практики от профильной организации
ст. преподаватель Васильевский А. С.
должность подпись, дата инициалы, фамилия
Задание принял к исполнению:
Обучающийся
.
дата подпись инициалы, фамилия
Варианты заданий: 7 9 5 4 1.
Задание 1.
Два игрока играют в следующую игру. Перед ними лежат две кучки камней, в первой из которых 2, во второй – 3 камня. У каждого игрока неограниченное количество камней. Игроки ходят по очереди. Ход состоит в том, что игрок или увеличивает число камней в какой-то кучке в 3 раза, или добавляет 3 камня в любую из кучек. Выигрывает игрок, после хода которого общее число камней в двух кучках становится не менее 33. Кто выигрывает: игрок, делающий ход первым, или игрок, делающий ход вторым? Ответ обоснуйте.
Решение:
Таблица возможных ходов:
Стартовая позиция |
1 игрок 1 ход |
2 игрок 2 ход |
1 игрок 3 ход |
2 игрок 4 ход |
2,3 |
2,9 |
2,27 |
2,81 |
- |
6,9 |
6,27 |
- |
||
2,12 |
2,36 |
- |
||
5,9 |
5,27 |
5,30 |
||
15,9 |
45,9 |
|||
5,12 |
5,36 |
|||
8,9 |
8,27 |
|||
6,3 |
6,9 |
6,27 |
- |
|
18,3 |
54,3 |
- |
||
6,6 |
18,6 |
54,6 |
||
9,6 |
27,6 |
|||
9,3 |
9,9 |
9,27 |
||
27,3 |
27,9 |
|||
9,6 |
27,6 |
|||
12,3 |
36,3 |
|||
2,6 |
2,18 |
2,54 |
- |
|
6,6 |
18,6 |
54,6 |
||
9,6 |
27,6 |
|||
2,9 |
2,27 |
2,81 |
||
6,9 |
6,27 |
|||
2,12 |
2,36 |
|||
5,9 |
5 ход |
|||
5,6 |
5,18 |
5,54 |
||
15,6 |
45,6 |
|||
5,9 |
5 ход |
|||
8,6 |
5 ход |
|||
5,6 |
5,18 |
5,54 |
- |
|
15,6 |
45,6 |
- |
||
5,9 |
5,27 |
5,81 |
||
15,9 |
45,9 |
|||
5,12 |
5,36 |
|||
8,9 |
8,27 |
|||
8,6 |
8,18 |
8,54 |
||
24,6 |
24,9 |
|||
8,9 |
8,27 |
|||
11,6 |
33,6 |
Серым цветом отмечены наилучшие стратегии для победы 2 игрока, зеленым- выигрышные ходы.
После любого хода первого игрока, второй может увеличить число камней в одной из кучек так, что у первого не будет возможности выиграть на 3 ход. В итоге второй игрок победит на четвёртом ходу, умножив большую кучку камней на 3. Выигрышный ход для второго игрока есть в каждой вариации 1 хода первого игрока.
Ответ: выиграет 2 игрок.
Вывод: чтобы определить исход игры требуется исследование всех возможных вариантов развития игры.
Задание 2.
Вариант 9: Два игрока играют в следующую игру. На координатной плоскости в точке с координатами (2; –2) стоит фишка. Игроки ходят по очереди. Ход состоит в том, что игрок перемещает фишку из точки с координатами (x; y) в одну из трех точек: (2+x; y+3), (x;5+y) или (x+1; y+4). Выигрывает тот игрок, после хода которого расстояние по прямой от фишки до точки с координатами (0,3) больше 15 единиц. Кто выигрывает: игрок, делающий ход первым, или игрок, делающий ход вторым? Ответ обоснуйте
Решение:
Квадрат расстояния от фишки до точки с координатами (0, 3): r2 = x2 + (y-3)2. Побеждает игрок, после хода которого r2 > 225. Алгоритм выигрышной стратегии определим при помощи дерева всех возможных партий.
Дерево возможных ходов:
В случае, если игрок под номером 1 рассчитает все ходы безошибочно и выберет оптимальную стратегию, он выиграет игру.
Ответ: выигрывает игрок, делающий ход первым.
Вывод: Трудность победы в данной игре, изначальное отсутствие равно-вероятности событий победы одного и другого игрока. Так же чтобы определить исход такой игры требуется пошаговое исследование всех возможных вариантов развития игры.
Задание 3. Написать алгоритм программы, при выполнении которой с клавиатуры считываются координаты точки (x1; y1) на плоскости (x1; y1 – действительные числа) и определяется принадлежность заданной точки некоторой области, включая ее границы. Область ограничена графиком y=f(x) и прямыми y= a, x=b и х=c. Пояснить решение графически
Вариант 5: f(x)=tan(x), a=0, b=0.5, c=1.5.
Решение:
График:
Программа:
#include <iostream>
#include <math.h>
#include <conio.h>
using namespace std;
int main()
{
float x, y;
cout << "Vvedite x, y" << "\n";
bool choice = true;
while (choice)
{
cin >> x >> y;
if ((y <= tan(x) && (x <= 1.5) && (y >= 0) && (x >= 0.5)))
{
cout << "the point is in the area" "\n";
}
else
{
cout << "the point is not in the area" "\n";
}
cout << "Enter your choice:1-check new dot; 0-exit the program";
cin >> choice;
}
return 0;
}
Начало
Ввод x, y
Конец
choice
0 – exit
1 – check new dot
The point is not in the
area
The point is in the area
y<=tan(x) y>=0 x<=1.5 x>=0.5
Результат:
Вывод: Языки программирования высокого уровня очень хорошо подходят для решения прикладных и математических задач.
Задание 4.
Вариант 4: Вывести все десятичные числа A (300<A<800), в двоичной за-писи которых число нулей на 2 превосходит число единиц
Решение:
Текст программы:
#include <stdio.h>
#include <conio.h>
int main()
{
int i, ones, zeroes, j, lastbit, flag;
for (i = 300; i <= 799; i++)
{
lastbit = 0;
ones = 0;
zeroes = 0;
flag = 0;
for (j = sizeof(int) * 8 - 1; j >= 0; j--)
if (((i & (1 << j)) != 0) && (flag == 0))
{
lastbit = j;
flag = 1;
}
for (j = lastbit; j >= 0; j--)
if ((i & (1 << j)) != 0)
ones++;
else
zeroes++;
if (zeroes - ones == 2)
printf("%d ", i);
}
return 0;
}
Результат:
Вывод: Языки программирования высокого уровня очень хорошо подходят для решения прикладных и математических задач.
Задание 5. Решить логическую задачу. Вариант 1.
По обвинению в ограблении перед судом предстали Иванов, Петров, Сидоров. Следствием установлено следующее:
1) Если Иванов не виновен или Петров виновен, то Сидоров виновен.
2) Если Иванов не виновен, то Сидоров не виновен.
Виновен ли Иванов?
Решение:
Рассмотрим высказывания:
A = {Иванов виновен};
B = {Петров виновен};
C = {Сидоров виновен}.
Запишем на языке алгебры логики факты, установленные следствием:
, .
Обозначим:
F=
Составим таблицу истинности:
A |
B |
C |
F |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
Из анализа таблицы следует, что F истинно только в тех
случаях, когда А истинно, т. е. Иванов в ограблении виновен.
Вывод: при анализе задачи использовались некоторые правила логики для поиска ответа.