8 - Ввод, сортировка и двоичный поиск в массиве структур.

Лабораторная работа 8 для студентов курса “Основы программирования” 1 курса кафедры ИУ5 МГТУ им Н.Э. Баумана.

Содержание

Цель работы

Работа со структурами и массивами структур. Закрепление полученных навыков программирования на С++

Начало работы

Зайдите в свою локальную директорию с репозиторием для выполнения лабораторных работ. Заберите ветку с соответствующей лабораторной работой из общего репозитория (в лабораторной работе 0 был отмечен меткой upstream):

git pull upstream

или

git pull upstream lab_8

Переключитесь на ветку с текущей лабораторной работой:

git checkout lab_8

Свяжите ветку локального репозитория с вашим удаленным репозиторием:

git push --set-upstream origin lab_8

Задание

Англо-русский словарь построен в виде массива структур Dictionary. Структура содержит английское слово и соответствующее ему русское слово. Для хранения записей словаря необходимо использовать динамический массив.

Разработать программу, которая:

Начальное число слов в словаре равно 10.

Для исключения проблем, связанных с вводом кириллицы, вводите русские слова латинскими буквами, например: kot (cat), sobaka(dog) и т.п.

Указания по выполнению работы

I. Определение состава и способа представления исходных данных, результатов и промежуточных данных

Pазмер словаря неограничен. Вам необходимо использовать динамический массив для хранения записей словаря. Также на длину слова не устанавливается ограничений. Поэтому для хранения записей словаря в оперативной памяти (ОП) можно использовать структуру Dictionary:

struct Dictionary {
    char *engl;    // слово по-английски
    char *rus;     // слово по-русски
};

Словарь хранится в текстовом файле. Элементы массива структур Dictionary будем записывать в файл последовательно, начиная с нулевого. При этом поля структуры записываются в виде отдельных строк, т.е. каждое слово должно заканчиваться символом \0.

II. Разработка алгоритма решения задачи

При программировании этой задачи уделим дополнительное внимание разбиению на функции и спецификации их интерфейсов. Например, логично оформить в виде функции каждую операцию со словарем (формирование, поиск, добавление и удаление элемента), поскольку они представляют собой законченные действия.

Будем исходить из того, что все функции должны быть независимы, чтобы изменения в одной функции не могли влиять на поведение другой. Для этого всё, что функциям необходимо получать извне, будем передавать им через параметры.

Прежде всего определим интерфейс нашей программы. В соответствии с заданием, кажется логичным предоставить пользователю следующие возможности:

  1. добавление слов в словарь;
  2. удаление слов из словаря;
  3. перевод слов с английского на русский;
  4. перевод слов с русского на английский;
  5. просмотр словаря (вывод на экран словаря из ОП);
  6. вывод словаря в файл;
  7. выход.

III. Кодирование и тестовые примеры

В этой работе удобно использовать технологию создания программы "сверху вниз": сначала отладить главную функцию, а затем постепенно добавлять к ней остальные. На месте еще не добавленных функций обычно ставятся так называемые "заглушки" (функции без реализации). Данные функции для отладки могут отображать в консоли информационное сообщение о том, что эти функции были вызваны.