PozerJKee
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: Составить программу, которая содержит текущую информацию о книгах в библиотеке. Сведения о книгах содержат: -номер УДК; -фамилию и инициалы автора; -название; -год издания; -количество экземпляров данной книги в библиотеке. Программа должна обеспечивать: -начальное формирование данных обо всех книгах в библиотеке в виде двоичного дерева; -добавление данных о книгах, вновь поступающих в библиотеку; -удаление данных о списываемых книгах; -по запросу выдаются сведения о наличии книг в библиотеке, упорядоченные по годам издания. | я ее решил, но данные обо всех книгах формируются с помощью списка, прошу помочь переделать код, ибо в деревьях ваще ничего не понимаю Вот Код: Цитата: #include <iostream> #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <windows.h> using namespace std; struct LIBRARY { char nomer[30]; char FIO[30]; char nazvanie[40]; int Year; int kolvo; }; struct STR { LIBRARY *Library; STR *next; }; STR * create(LIBRARY * Library) //начальное формирование списка { STR *root=new STR; root->Library=Library; root->next=NULL; return root; } void add(LIBRARY *Library, STR* root) //добавление нового элемента списка { while(root->next) root=root->next; root->next=new STR; root->next->Library=Library; root->next->next=NULL; } void printLIBRARY(LIBRARY *Library) //вывод на экран { cout<<"Nomer => "<<Library->nomer<<endl; cout<<"FIO => "<<Library->FIO<<endl; cout<<"Nazvanie => "<<Library->nazvanie<<endl; cout<<"Year => "<<Library->Year<<endl; cout<<"Kolvo => "<<Library->kolvo<<endl; cout<<endl; } LIBRARY * makeLIBRARY() //добавление книги { cout<<"Enter book data:"<<endl; LIBRARY *Library=new LIBRARY; fflush(stdin); cout<<"Enter book nomer: => "; cin.getline(Library->nomer,30); cout<<"Enter Author's FIO: => "; cin.getline(Library->FIO,30); cout<<"Enter book name: => "; cin.getline(Library->nazvanie,40); cout<<"Enter made year: => "; cin>>Library->Year; cout<<"Enter count of books: => "; cin>>Library->kolvo; return Library; } int choice() { int answer; getch(); system("cls"); cout<<"Main menu"<<endl; cout<<"1. Add new books to the list"<<endl; cout<<"2. Print LIBRARY at list"<<endl; cout<<"3. Search and delete"<<endl; cout<<"4. Clear all entries"<<endl; cout<<"5. Exit"<<endl; cout<<"Enter your choice: "; cin>>answer; fflush(stdin); if(answer>=1 && answer<=5) return answer; else return 0; } int main() { STR *root=NULL; int ch; while(1) { ch=choice(); if(ch==1) { cout<<endl; if(root==NULL) root=create(makeLIBRARY()); else add(makeLIBRARY(),root); } else if(ch==2) { cout<<endl; int i=0; int N=0; STR *proot=root; while (root) { N++; root=root->next; } LIBRARY *buf; LIBRARY **pLibrary=new LIBRARY*[N]; root=proot; while (root) { pLibrary[i]=root->Library; root=root->next; i++; } root=proot; for (i=0;i<N;i++) printLIBRARY(pLibrary[i]); } else if(ch==3) { char qwe[30]; char qw[30], q[1]; cout<<"Enter nomer of book => "<<endl; cin.getline(qwe,30); while (root) { if (!strcmp(qwe,root->Library->nomer)) { { printLIBRARY(root->Library); cout<<"Do you want clear this entries? (y/n) "<<endl;// Удаление записи cin.getline(q,1); if (!strcmp(q,"y")) { root->Library=NULL; } root=root->next; } } else if (strcmp(qwe,root->Library->nomer)) root=root->next; } cout<<endl; } else if(ch==5) { break; cout<<endl; } } return 0; } | |