Задание по теме: Детская считалка

Содержание

Слайд 2

Выбор структуры данных

Требуется динамическая структура данных, которая обеспечила бы возможность:
Задать некоторую линейную

Выбор структуры данных Требуется динамическая структура данных, которая обеспечила бы возможность: Задать
последовательность однотипных элементов(участников считалки)
Получать доступ к следующему элементу за текущим(каждому следующему слову считалки – соответствует следующий участник)
Иметь доступ от последнего элемента к первому (так как участники стоят по кругу)
Иметь возможность простого и быстрого удаления элемента(проигравший выбывает)

Связный
список

Циклический
связный список

Двунаправленный
циклический
связный список

Слайд 3

Алгоритм(краткое описание)
1. Добавляем необходимое количество элементов в список
2. Пока не кончится считалка:

Алгоритм(краткое описание) 1. Добавляем необходимое количество элементов в список 2. Пока не
считываем очередное слово считалки и переходим к следующему элементу списка
3. Удаляем элемент на котором закончилась считалка, возвращаемся в начало считалки
4. Повторяем 2-3 пока не останется только один элемент в списке
Сложность по времени О(k*n), где k – количество слов в считалке, n – число участников. Сложноcть по памяти О(n)

Слайд 4

Алгоритм

1 Процедура Добавление()
2 Начало процедуры
3 Создать новый элемент списка T

Алгоритм 1 Процедура Добавление() 2 Начало процедуры 3 Создать новый элемент списка
4 Перeменной T.name присвоить значение переменной Name
5 Если значение указателя А равно nil, то:
5.1 Указателю А присвоить значение T
5.2 Указателю T.next присвоить значение T
5.3 Указателю T.prev присвоить значение T
6 Иначе:
6.1 Указателю T.next присвоить значение A.next
6.2 Указателю А.next.prev присвоить значение T
6.3 Указателю T.prev присвоить значение А
6.4.Указателю А.next присвоить значение T
7 Конец процедуры
8 Процедура Удаление(входные данные:P - указатель)
9 Начало процедуры
10 Указателю P.next.prev присовить значение P.prev
11 Указателю P.prev.next присвоить значение Р.next
12 Освободить память от элемента P
13 Конец процедуры

Слайд 5

Алгоритм(продолжение)

14 Начать работу алгоритма
15 Присвоить значение nil указателю A.
16 Вывести сообщение -

Алгоритм(продолжение) 14 Начать работу алгоритма 15 Присвоить значение nil указателю A. 16
"Хотите добавить нового участника?"
17 Считать ответ пользователя в переменную Answer
18 Если значение переменной Answer = "да" то:
18.1 Вывести сообщение - "Введите имя участника"
18.2 Считать ответ пользователя в переменную Name
18.3 Вызвать процудуру Добавление()
18.4 Вернуться к пункту 16
19 Вывести сообщение - "Выберите номер считалки"
20 Считать в переменную number номер считалки
21 Открыть текстовый файл соответствующий номеру считалки
22 Пока A.next<>A делать:
22.1 Считать очередное слово считалки
22.2 Если встречен конец текстового файла со считалкой, то:
22.2.1 Указателю A присвоить значение A.next
22.2.3 Вывести сообщение "A.prev.name выбывает"
22.2.4 Вызвать процедуру Удаление(A.prev)
22.2.5 Перейти в текстовом файле с считалкой, к началу считалки
22.2.6 Перейти к пункту 22
22.3 Иначе:
22.3.1 Указателю A присвоить значение A.next
22.3.2 перейти к пункту 22.1
23 Вывести сообщение - "А.name - выиграл"
24 Завершить работу алгоритма

Слайд 6

Пример

A

Name – имя участника
Next – ссылка на следующего участника
Prev – ссылка на

Пример A Name – имя участника Next – ссылка на следующего участника
предыдущего участника
А - указатель на текущий элемент

Слайд 7

Добавляем 1й элемент в список.

Добавляем 1й элемент в список.

Слайд 8

Добавляем 2й элемент в список.

Добавляем 2й элемент в список.

Слайд 9

Добавляем 3й элемент в список.

Добавляем 3й элемент в список.

Слайд 10

Запускаем считалку

Запускаем считалку

Слайд 14

Удаляем элемент, на котором закончилась считалка

Удаляем элемент, на котором закончилась считалка

Слайд 15

Так как число участников >1, снова запускаем считалку

- Aты

Так как число участников >1, снова запускаем считалку - Aты

Слайд 16

- Баты

- Баты

Слайд 18

- Солдаты

- Солдаты

Слайд 19

Удаляем элемент, на котором закончилась считалка

Удаляем элемент, на котором закончилась считалка

Слайд 20

Так как остался всего один участник, он объявляется победителем

Победитель – Маша
Выбывшие -

Так как остался всего один участник, он объявляется победителем Победитель – Маша Выбывшие - Саша,Даша
Саша,Даша

Слайд 21

Интерфейс: выбор параметров расчёта

Интерфейс: выбор параметров расчёта

Слайд 22

Интерфейс: Добавление участника

Интерфейс: Добавление участника

Слайд 23

Интерфейс: Выбор считалки

Интерфейс: Выбор считалки

Слайд 24

Интерфейс: Процесс расчёта

Интерфейс: Процесс расчёта

Слайд 25

Интерфейс: Процесс расчёта

Интерфейс: Процесс расчёта