49027 (Создание базы данных о поездах дальнего следования), страница 3
Описание файла
Документ из архива "Создание базы данных о поездах дальнего следования", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "49027"
Текст 3 страницы из документа "49027"
printf (« «Расписание ж/д 2007»\n»);
while(pp)
{Main_Menu();
clrscr();
}
printf («Конец работы с деревьями\n»);
return 0;
}
/*Функция меню*/
Main_Menu(void)
{int ns, s;
flushall();
do
{for (i=0; i printf («\n % s»,*menu[i]); printf («\n»); if (s=((scanf («%d»,&ns)<1))) {flushall(); clrscr(); printf («\n Ошибка в номере!! Будте внимательны»); } } while(s); switch(ns) {case 1: Crt_Der(); break; case 2: print_der(kr); getche(); break; case 3: /*Поиск по времени*/ printf («\n Введите номер поезда:»); int v; scanf («%d»,&v); Poisk_nom_p (kr, v); break; case 4: /*Поиск по станции назначения*/ int sr/*, fl*/; char s[20]; printf («\n Введите станцию назначения:»); scanf («%s», s); Poisk_st (kr, s); break; case 5: pp=0; } return 0; } /*Формирование дерева*/ TREE *der (TREE *kr, SISTEMA word) {if (kr==NULL) // дерево пустое, записываем информацию в вершину {kr=new TREE; // выделяется память под новый элемент //printf («\n % d % s%.2f», word.nom_p, word.st, word.vr); printf («\n Номер поезда % d», word.nom_p); printf («\n Станция назначения % s», word.st); printf («\n Время отправления%.2f», word.vr); kr->w=word; // присваиваем информацию kr->c=1; kr->l=kr->r=NULL; } else if (word.nom_p==kr->w.nom_p) // сравниваем поступившую информацию с информацией в узле kr->c++; // элементы одинаковы, включается счетчик else if (word.nom_p else kr->r=der (kr->r, word); // иначе вправо return kr; } /*Запись в дерево информации и вывод дерева на экран*/ void Crt_Der() { SISTEMA a; a.nom_p=0; while (a.nom_p!=-1) { printf («\n Введите номер поезда: (-1 – выход)»); scanf («%d», &a.nom_p); if (a.nom_p==-1) break; flushall(); {printf («\n Введите название станции:»); scanf («%s», a.st); printf («\n Введите время отправления:»); scanf («%f», &a.vr); if (a.nom_p!=-1) kr=der (kr, a); } } } /*Печать дерева*/ void print_der (TREE *kr) {if(kr) {print_der (kr->l); // обход левых ветвей printf («\n Номер поезда % d», kr->w.nom_p); printf («\n Станция назначения % s», kr->w.st); printf («\n Время отправления%.2f», kr->w.vr); printf («\n»); print_der (kr->r); // обход правых ветвей } } /*Поиск по номеру поезда*/ int Poisk_nom_p (TREE *d, int v) { if (d==NULL) { printf («\n \t Элемент с заданным ключом не найден\n»); return 0; } else // Поиск элемента с заданным ключом {if (v==d->w.nom_p) { printf («\n Станция назначения % s», d->w.st); printf («\n Время отправления%.2f», d->w.vr); // print_der(kr); getch(); } /*Рекурсивный обход*/ if (vw.nom_p) Poisk_nom_p (d->l, v); if (v>d->w.nom_p) Poisk_nom_p (d->r, v); } } /*Поиск по названию станции*/ int Poisk_st (TREE *d, char s[20]) {int sr, fl; if (d==NULL) printf («\n \t Элемент с заданным ключом не найден\n»); else // Поиск элемента с заданным ключом {sr=strcmp (s, d->w.st); if (sr<0) {q=d; // сохраняем предидущую вершину fl=1; // двигаемся влево Poisk_st (d->l, s); // спускаемся влево } else if (sr>0) {q=d; // сохраняем предидущую вершину fl=0; // двигаемся вправо Poisk_st (d->r, s); // спускаемся вправо } else // нужный ключ (станция назначения) найден {if (sr==0) printf («\n Номер поезда % d», kr->w.nom_p); printf («\n Время отправления%.2f», kr->w.vr); getch(); } /*Рекурсивный обход*/ if (sw.st) Poisk_st (d->l, s); if (s>d->w.st) Poisk_st (d->r, s); } }