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