Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Федеральное агентство по образованию.doc
Скачиваний:
9
Добавлен:
20.09.2019
Размер:
220 Кб
Скачать
☆

5. Структура программы.

Данная программа состоит из следующих блоков:

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

B) Подпрограмма input(имя входного файла, имя выходного файла), где осуществляется проверка на наличие файла данных, есть ли в нем данные. При наличии данных информация записывается в список.

С) Подпрограмма sort(список magaz), где осуществляется сортировка данных методом пузырька по городу, улице, номеру дома.

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

6. Описание алгоритма программы.

Функция чтения данных из файла.

Формальные параметры: имя входного файла – namevh, имя выходного файла – namevih

Переменные типа файл *f,*f1;

Целые temp

Переменные структуры Магазин *magaz,*last=NULL; // magazini, nachalo steka

Переменные структура Продукты *prd,*lastprd; // producti, nachalo steak

Открыть файл f

Создать файл f1

Если входной файл не найден то

Вывод «Входной файл не найден»

Возврат last

Все

Если входной файл не пуст то

Вывод «Исх.данные:»

Цикл пока не конец файла

Выделение памяти магазин

Считать номер магазина, город, улица, номер дома

temp=1;

lastprd=NULL;

Цикл пока temp=1

Выделение памяти продукты

Считать Наименование продукта, цена, срок хранения

Если считанная строка = разделитель то

temp=0;

Иначе

prd->next=lastprd;

lastprd=prd;

Всё

Конец цикла

magaz->prod=lastprd;

magaz->next=last;

last=magaz;

Конец цикла

Иначе

Вывод «Файл пуст»

Всё

Закрыть файл f;

Закрыть файл f1;

Возврат last

Функция сортировки данных.

Формальные параметры: ссылка на список – magaz

Переменные структуры магазин *last=NULL,*next; // nachalo steka, sled. element

Переменные структуры продукты *prd; // vrem. producti

Переменные структуры адрес addr; // vrem. address

Целые tempn; // vrem. nomer magazina

Целые check=1; // proverka na izmenenie

last=magaz;

Цикл пока check=1

check=0;

Цикл пока (magaz!=NULL и magaz->next!=NULL)

next=magaz->next;

/*sortirovka pusirkom*/

Если города не совпадают то // proverka po gorodu

check=1;

prd=magaz->prod;

addr= magaz->adr;

tempn= magaz->nomer;

magaz->nomer = next->nomer;

magaz->adr = next->adr ;

magaz->prod= next->prod;

next->nomer = tempn;

next->adr = addr;

next->prod= prd;

Всё

Если города совпадают и улицы не совпадают то

check=1;

prd=magaz->prod;

addr= magaz->adr;

tempn= magaz->nomer;

magaz->nomer = next->nomer;

magaz->adr = next->adr ;

magaz->prod= next->prod;

next->nomer = tempn;

next->adr = addr;

next->prod= prd;

Всё

Если города совпадают и улицы совпадают и номера домов не совпадаютто

prd=magaz->prod;

addr= magaz->adr;

tempn= magaz->nomer;

magaz->nomer = next->nomer;

magaz->adr = next->adr ;

magaz->prod= next->prod;

next->nomer = tempn;

next->adr = addr;

next->prod= prd;

Всё

magaz=magaz->next;

Конец цикла

/*sortirovka pusirkom*/

magaz=last;

Конец цикла

Вывод «Отсортированные данные»

Цикл пока (magaz!=NULL)

Вывод «-»

Вывод номер магазина, город, улица, номер дома

magaz=magaz->next;

Конец цикла

Возврат last;

Функция вывода данных в файл.

Формальные параметры: ссылка на список – last, имя выходного файла – namevih

Переменные файла *f;

Переменные структуры магазин *magaz;

Переменные структуры продукты *prd,*tp;

Если выходной файл не найден то

Вывод «Выходной файл не найден»

Возврат 0

Все

Вывод «Итог:»

Цикл пока(last!=NULL)

Записать в файл номер магазина, город, улица, номер дома

prd=last->prod;

Цикл пока (prd!=NULL)

Записать в файл наименование продукта, цена, срок хранения

tp=prd;

prd=prd->next;

Освобождение памяти продукты tp

Конец цикла

magaz=last;

last=last->next;

Освобождение памяти магазин magaz

Запись в файл «* 0 0»

Конец цикла

Вывод «Информация записана»

Закрыть файл f;

Возврат 0;

Основная программа:

Начало

Переменные структуры магазин *magaz,*temp,*last,*prev; // magazini, dobavlenie, nachalo steka, dlya dobaleniya (predidushi element)

Переменные структуры продукты *prd,*lastprd; // producti, nachalo steka

Строковые переменные namevh[20];

Строковые переменные namevih[20];

Вывод «Введите имя файла с данными»

Ввод namevh

Вывод «Введите имя файла для данных»

Ввод namevh

magaz= Функция чтения данных из файла (namevh,namevih);

Если (magaz!=NULL) то

magaz= Функция сортировки данных (magaz); // sortirovka dannih

char ch=NULL; // soglasie na prodolzhenie vvoda, proverka dobavili ili net zapis'

last=magaz;

Вывод «Вводим новый магазин (Д)?»

Цикл пока (ch=='\0' или ch=='\n')

ch=getchar();

Конец цикла

Цикл пока (ch=='d' или ch=='D')

Выделение памяти магазин temp

Вывод «Ввод магазина»

Вывод «Введите адрес:»

Вывод «Номер магазина:»

Ввод temp->nomer

Вывод «Город:»

Ввод temp-> adr.gorod

Вывод «Улица:»

Ввод temp-> adr.ulica

Вывод «Номер дома:»

Ввод temp-> adr.nomd

ch=NULL;

Вывод «Вводим продукты (ДА)?»

Цикл пока (ch=='\0' или ch=='\n')

ch=getchar();

Конец цикла

Цикл пока (ch=='d' или ch=='D')

Выделение памяти продукты prd

Вывод «Наименование:»

Ввод prd->name

Вывод «Цена:»

Ввод prd->price

Вывод «Срок хранения:»

Ввод prd->srok

lastprd=prd;

Вывод «Продолжить вводить продукты (ДА)?»

ch=NULL;

Цикл пока (ch=='\0' или ch=='\n')

ch=getchar();

Конец цикла

Конец цикла

temp->prod=lastprd;

/*Vvod Novogo magazina*/

//--------------------------------

prev=NULL;

ch='8';

Цикл пока (magaz!=NULL и ch!=NULL)

Если города и улицы совпадают то

Если (prev!=NULL) то

prev->next = temp;

Всё

temp->next=magaz;

ch=NULL;

Всё

prev=magaz;

magaz=magaz->next;

Конец цикла

Если (ch!=NULL) то

prev->next=temp;

temp->next=NULL;

Всё

magaz=last;

Вывод «Продолжить вводить магазины? (ДА)»

ch=NULL;

Цикл пока (ch=='\0' или ch=='\n')

ch=getchar();

Конец цикла

Конец цикла

Функция вывода данных в файл (magaz,namevih); // vivod dannih v fail

Всё

Конец алгоритма