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

Содержание

Слайд 2

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

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

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

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

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

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

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

Слайд 3

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

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

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

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

Алгоритм

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

T
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.

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

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 – ссылка на следующего

Пример

A

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

на предыдущего участника
А - указатель на текущий элемент
Слайд 7

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

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

Слайд 8

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

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

Слайд 9

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

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

Слайд 10

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

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

Слайд 11

Слайд 12

Слайд 13

Слайд 14

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

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

Слайд 15

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

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

- Aты

Слайд 16

- Баты

- Баты

Слайд 17

- Шли

- Шли

Слайд 18

- Солдаты

- Солдаты

Слайд 19

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

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

Слайд 20

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

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

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

- Саша,Даша
Слайд 21

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

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

Слайд 22

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

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

Слайд 23

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

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

Слайд 24

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

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

Слайд 25

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

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