
- •Введение
- •2 Условие задачи №1
- •3 Структура входных/выходных данных
- •4 Блок-схемы алгоритмов и алгоритмы по шагам
- •5 Код программы
- •6 Результаты работы программы
- •7 Условие задачи №2
- •8 Структура входных/выходных данных
- •9 Блок-схемы алгоритмов и алгоритмы по шагам
- •10 Код программы
- •11 Результаты работы программы
- •12 Условие задачи №3
- •13 Структура входных/выходных данных
- •14 Блок-схемы алгоритмов и алгоритмы по шагам
- •15 Код программы
- •16 Результаты работы программы
- •17 Заключение
- •18 Литература
11 Результаты работы программы
12 Условие задачи №3
Имеется кольцо автостоянок. В элементе кольца содержится информация: название стоянки, количество мест. К элементам кольца указатель на очередь, содержаущую номера машин и ФИО владельцев. Все данные из кольца и очереди записываются в файл и читаются из него.
13 Структура входных/выходных данных
Входные данные:
Бинарные файлы parking.dat и _f.dat
Кольцо автостоянок struct RING с полями
R rr - подструктура R
struct LINE *h,*t - указатели на голову и хвост очереди LINE
RING *l, *r - указатели на левый и правый элементы кольца
Подструктура элемента кольца struct R с полями
int p - кол-во мест
int f_p - кол-во свободных мест
char name[15] - название стоянки
Очередь машин struct LINE с полями
L ll - подструктура L
LINE *next - указатель на следующий элемент очереди LINE
Подструктура элемента очереди struct LINE с полями
char fio[30] - фио владельца
char num[10] - номер машины
Выходные данные:
Изменённые бинарные файлы parking.dat и _f.dat
14 Блок-схемы алгоритмов и алгоритмы по шагам
Алгоритм по шагам функции main
Объявление переменных:
RING *s = NULL, *cur - структурная переменная указатель на кольцо;
int k = 1 - флаг окончания ввода стоянок и машин;
int kk = 0 - флаг поиска стоянки (равен 0, если нет стоянки);
char in[15] - буфер для ввода.
Вызов функции записи информации из файла в оперативную память from_file().
Организация бесконечного цикла.
Вывод диалогово меню.
Если нажата клавиша ‘1’, то переход к пункту 6, если ‘2’, то переход к пункту 13, если ‘3’, то переход к пункту 20, если ‘4’, то переход к пункту 22, если ‘5’, то переход к пункту 24, если ‘q’, то переход к пункту 26.
Ввод названия стоянки in.
Начало цикла по элементам кольца cur.
Если найдена стоянка (in равно cur->rr.name), то kk=1 и прервать цикл, иначе пункт 9.
Двигаемся по кольцу cur=cur->l.
Прервать цикл.
Если стоянка была найдена (kk равно 1), то вызов функции добавления машины add_car(), иначе пункт 12.
Прервать цикл
Ввод названия стоянки in.
Начало цикла по элементам кольца cur.
Если найдена стоянка (in равно cur->rr.name), то kk=1 и прервать цикл, иначе пункт 16.
Двигаемся по кольцу cur=cur->l.
Прервать цикл.
Если стоянка была найдена (kk равно 1), то вызов функции удаления машины del_car(), иначе пункт 19.
Прервать цикл.
Вызов функции добавления стоянки add_park().
Прервать цикл.
Вызов функции удаления стоянки del_park().
Прервать цикл.
Вызов функции вывода информации о стоянках out().
Прервать цикл.
Вызов функции записи информации в файл to_file().
Вызов функции освобождения памяти от списков free_mem().
Выход из функции.
Конец функции.
Блок-схема функции занесения информации в файлы to_file: (передаётся указатель на элемент кольца s)
Алгоритм по шагам функции удаления стоянки del_park: (передаётся указатель на элемент кольца s)
Объявление переменных:
RING *cur = s - структурная переменная указатель на кольцо;
char in[15] – буфер для ввода.
Ввод названия удаляемой стоянки in.
Организация цикла по кольцу стоянок cur.
Если стоянка не найдена(in не равно cur->rr.name), то пункт 5, иначе 6.
Преход к следующему элементу кольца cur=cur->r.
Если это единственный элемент (cur равен cur->r), то пункт 7, иначе 9.
Освобождение памяти от cur.
Выход из функции.
Если текущий равен головному (cur равен s), то пункт 10, иначе 11.
Сдвиг головного элемента s=s->r.
Обход удаляемого элемента cur->l->r=cur->r.
Освобождение памяти от cur.
Выход из функции.
Конец цикла по кольцу cur.
Конец функции.
Блок-схема функции освобождения памяти от списков free_mem: (передаётся указатель на элемент кольца s)