View difference between Paste ID: kzdw7GmU and gA7sn93L
SHOW: | | - or go back to the newest paste.
1
Задание IV. Структуры.
2
3
Задание, общее для всех: написать программу, реализующую записную книжку.
4
Должна заводится и хранится информация вида:
5
1) Имя (уникальное)
6
2) Телефон
7
8
Должны поддерживаться следующие операции:
9
1) Добавление/изменение записи
10
2) Поиск записи (по имени и, возможно, как-то еще)
11
3) Удаление (по имени)
12
4) Вывод всех
13
14
Индексация осуществляется по имени, которое уникально. При попытке добавить повторно человека с тем же именем должна происходить замена.
15
16
Сохранение и загрузка из файла желательны, но опциональны.
17
18
19-
Должено быть реализовано ядро со всеми функциями. Функции должны быть покрыты тестами.
19+
Должно быть реализовано ядро со всеми функциями. Функции должны быть покрыты тестами.
20
К этому ядру должен быть интерфейс, который позволяет продемонстрировать работу ядра.
21-
Интерфейс должен бть такого вида, на экран выводится меню:
21+
Интерфейс должен быть такого вида, на экран выводится меню:
22
--------
23
Выберите требуемое действие:
24
1) Добавить запись
25
2) Искать
26
3) Удалить
27
...
28
N) Выход
29
30
Далее ожидается ввод числа. Если число неправильное, то об этом сообщается и предлагается выбрать еще раз.
31
В зависимости от выбранного действия запрашивается имя или имя+телефон, выводится результат операции и снова меню.
32
Интерфейс должен быть разумным и законченным, например, резонно запрашивать подтверждение при удалении. Можно рассмотреть 
33
интерфейс банкомата в качестве образца, чем-то похоже.
34
35
Убедительная просьба не использовать элементы ООП при решении этой задачи, передавайте структуры по ссылке.
36
37
Конкретные варианты:
38
39
1) Хранить в бинарном дереве поиска, поиск по явному имени дихотомический.
40
41-
2) Хранить в линейном списке, при вставке упорядочивать элементы. 
41+
2) Хранить в префиксном дереве (боре), поиск по явному имени.
42-
Поиск как по явному имени, дихотомический. (Если хотите, то можно так "Хранить в боре, поиск по явному имени").
42+
43
3) Хранить в динамически расширяющемся массиве, при вставке упорядочивать элементы. 
44
Поиск как по явному имени, дихотомический.
45
46
4) Хранить в линейном списке, поиск линейный. Поиск как по явному имени, так и возможность искать по подстроке
47
(если возможно несколько вариантов, то предлагать их).
48
49
5) Хранить в динамически расширяющемся массиве. Поиск как по явному имени, так и возможность искать по подстроке
50
(если возможно несколько вариантов, то предлагать их).
51
52
6) Хранить в динамически расширяющемся массиве, поиск линейный, сделать возможность поиска по шаблону типа ??lex, где "?" может означать любой символ.
53
54
7) Хранить в линейном списке, поиск линейный, сделать возможность поиска по шаблону типа ??lex, где "?" может означать любой символ.
55
56
8) Хранить в динамически расширяющемся массиве, поиск линейный, сделать возможность поиска как по имени, так и по телефону. 
57
58
9) Хранить в линейном списке, поиск линейный, сделать возможность поиска как по имени, так и по телефону.