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) Хранить в линейном списке, поиск линейный, сделать возможность поиска как по имени, так и по телефону. |