Лабораторная работа № 4.
Тема: "Указатели". (6 часов)
Составить программу, моделирующую тасование карт в колоде. Принять количество карт равным 52. После тасования раздается 5 карт. Требуется определить, находится ли на руках две запрошенные карты.
Написать программу, моделирующую лабиринт. В качестве символа стен выберите символ «#». В лабиринте должно быть не более N входов и выходов. Попробуйте составить рекурсивную функцию, которая будет искать выход из лабиринта, начиная с некоторой начальной позиции.
Составить модель гонки черепахи и зайца. Соперники начинают гонку в первой клетке из 70. Трасса идет в гору, так что соперники могут соскальзывать назад. С каждым тактом программы устанавливать позицию животных согласно правилам:
Животное |
Тип движения |
Процент времени |
Перемещение |
Черепаха |
Быстрое ползанье |
50 % |
3 клетки вправо |
|
Скольжение |
20% |
6 клеток влево |
|
Медленное ползанье |
30% |
1 клетка вправо |
Заяц |
Сон |
20% |
Движения нет |
|
Большой прыжок |
20% |
9 клеток вправо |
|
Сильное скольжение |
10% |
12 клеток влево |
|
Маленький прыжок |
30% |
1 клетка вправо |
|
Маленькое скольжение |
20% |
2 клетки вправо |
4. Составить программу, моделирующую перемешивание домино. Принять во внимание, что меняться местами могут лишь соседние элементы. Показать процесс перемешивания пошагово. Попробуйте составить функцию, делящую затем все домино поровну между 2-мя участниками игры и делающую первый ход одного из участников.
5. Составить программу, моделирующую игру «крестики-нолики». Для указания позиции крестика или нолика играющего использовать номер строки и номер столбца, в который игрок хочет поставить символ.
6. Имеются N-точек, соединенных отрезками. Составить программу, находящую наименьший путь от одной точки до другой. Для реализации желательно воспользоваться рекурсией.
7. Имеются две точки – например, A и B. В некоторый момент времени точка В начинает движение (в направлении, определяемом по нажатию кнопок клавиатуры). Скорость точки В больше скорости точки А. Составить программу, которая стремится наиболее коротким способом передвинуть точку А к точке В.
8. Имеется группа белых и серых мышей количеством N, расположенных хаотически. Между ними имеются M свободных мест. Составить программу, моделирующую процесс разделения мышей на серых и белых (например, серые выше, белые – ниже) по правилу: каждая мышь может занимать только свободную рядом с ней позицию; за один такт программы мышь может переместиться не более чем в одну позицию.
9. Составить программу, моделирующую эволюцию системы из N-клеток пошагово по правилам, приведенным ниже в таблице. При превышении в системе некоторого количества клеток M выдать соответствующее сообщение о достижении системой критической отметки.
Событие |
Вероятность наступления события |
Рождение клетки |
35% ( N – четное); 20% (N – нечетное) |
Рождение 2-х клеток |
25% через каждые 5 тактов |
Смерть клетки |
30% |
Массовое вымирание (сокращение численности в 2 раза) |
10% |
Численность не изменяется |
0%, 15%, 25%, 40% - в зависимости от перечисленных выше значений. |
10. Составить программу, моделирующую тасование двух колод карт одновременно друг с другом и затем разделяющую эти колоды по правилам:
Если на предыдущем шаге в одной из колод оказывается более старшая карта, то на следующем такте программы карта добавляется в нее же;
Если такая карта уже имеется в колоде, то она пропускается и другая карта вытаскивается для второй колоды.
Вытаскивание карт продолжается до тех пор, пока все карты не будут розданы.
Карты раздаются в порядке возрастания, вне зависимости от масти.
Для реализации программы можно использовать рекурсию.