1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Бинарное дерево

Тема в разделе "Вопросы новичков и не только", создана пользователем tgg, 22 фев 2010.

  1. tgg

    tgg Гость

    Репутация:
    0
    Программа:
    Составить программу, которая содержит текущую информацию о книгах в библиотеке.
    Сведения о книгах включают:
    - номер УДК;
    - фамилию и инициалы автора;
    - название;
    - год издания;
    - количество экземпляров данной книги в библиотеке.
    Программа должна обеспечивать:
    - начальное формирование данных обо всех книгах в библиотеке в виде двоичного дерева;
    - добавление данных о книгах, вновь поступающих в библиотеку;
    - удаление данных о списываемых книгах;
    - по запросу выдаются сведения о наличии книг в библиотеке, упорядоченные по годам издания.

    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">код</div></div><div class="sp-body"><div class="sp-content">
    Код:
    #include <iostream>
    #include <locale>
    #include <ctime>
    #include <string>
    using namespace std;
    
    typedef struct library{ 
    char author[100];  
    int udk;	 
    char title[20];  
    int year;	
    int q;	
    struct library * next;	
    }Node;
    
    void addNode( Node *& list ); 
    void deleteNode( Node *& list, const int num ); 
    void outNodeNum( const Node * list, int num); 
    
    void outNode( const Node * list ); 
    void out( const Node * list ); 
    bool if_end( char * ch, wchar_t *str = L"" );
    //_________ MAIN_________________
    int main(int argc, char *argv[])
    { 
    Node * list = NULL;
    wcout.imbue(locale(".866"));
    addNode( list );
    outNode( list );
    int num;
    wcout << L"\n\nВведите номер УДК для просмотра информации о данной книге > ";
    cin >> num;		getchar();
    wcout << L"\n\nКнига с номером УДК "; cout << num;
    outNodeNum( list, num );
    wcout << L"\n\nУдаление книги по заданному номеру УДК > "; 
    cin >> num;		getchar();
    deleteNode( list, num );
    wcout << L"\n\nОставшиеся книги:";
    outNode( list );
    wcout << L"\n\nНажмите клавишу Enter для выхода из программы";
    getchar(); // пауза
    return 0;
    }
    //________ END MAIN ______________
    void addNode( Node *& list ){
    wcout << L"Введите данные о книгах:\n";
    wcout << L"Для выхода введите слово \"end\"\n\n";
    int num = 0;
    while(1){
    num++;
    wcout << L"\nДанные о книге с № " << num << endl;
    Node * n = new Node;
    if( if_end( n->author,L"Введите автора книги > " )) break;
    if( if_end( n->title, L"Введите название > " )) break;
    wcout << L"Введите УДК > ";
    cin >> n->udk;
    
    wcout << L"Введите год издания > ";
    cin >> n->year;
    wcout << L"Введите кол-во книг > ";
    cin >> n->q;getchar();
    
    n->next = list; 
    list = n;
    }
    }
    bool if_end( char * ch, wchar_t *str ){
    wcout << str;
    gets( ch );
    if( strcmp( ch, "end" )) return false;
    return true;
    }
    void out( const Node * list, int num ){
    wcout << L"\n\nКнига с УДК № " << num;
    wcout << L"\nАвтор книги > " << list->author;
    wcout << L"\nНомер УДК > "; cout << list->udk;
    wcout << L"\nНазвание > " << list->title;
    wcout << L"\nГод издания > "; cout << list->year;
    wcout << L"\nКол-во книг > "; cout << list->q;
    }
    void outNode( const Node * list ){
    int n = 1;
    for(; list; list = list->next ){
    out( list, n );
    n++;
    }
    }
    void outNodeNum( const Node * list, int num ){
    int n = 1;
    for(; list; list = list->next ){
    if( list->udk == num )
    out( list, n++ );
    }
    }
    void deleteNode( Node *& list, const int num ){
    int n = 1;
    Node *x, *y = list, *begin = list;
    wcout << L"\n\n_____ Удаление: ________";
    while( list ){
    if( list->udk == num ){
    x = list->next;
    out( list, n );
    n++;
    if( list != y ){
    delete list;
    y->next = list = x;
    }// end if( list != y ){
    else{
    delete list;
    y = list = x;
    }// end if( list != y ){
    }// end if( list->UDK == num ){
    else{
    y = list;
    list = list->next;
    }// end else if( list->UDK == num )
    }// end while()
    list = begin;
    }// end deleteNode()
    Как организовать биноарное дерево? исправьте, пожалуйста, программу
     
  2. sg^_^milytia

    sg^_^milytia Гость

    Репутация:
    0
Загрузка...
Похожие Темы - Бинарное дерево
  1. Maestresa
    Ответов:
    2
    Просмотров:
    1.859
  2. newslayer
    Ответов:
    0
    Просмотров:
    1.174
  3. European
    Ответов:
    0
    Просмотров:
    2.118
  4. Hanja
    Ответов:
    0
    Просмотров:
    1.155
  5. MrSpoon
    Ответов:
    0
    Просмотров:
    1.131

Поделиться этой страницей