Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2012, 01:07   #1
Novichok_help
Новичок
Джуниор
 
Регистрация: 21.03.2012
Сообщений: 1
По умолчанию Задание на односвязные списки в c++

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

Программа должна обеспечивать:
-начальное формирование данных обо всех книгах в библиотеке в виде списка;
-добавление данных о книгах, вновь поступающих в библиотеку;
-удаление данных о списываемых книгах;
-по запросу выдаются сведения о наличии книг в библиотеке, упорядоченные по годам издания.

Помогите реализовать последний пункт задания(упорядочить по годам)

Код:
#include <iostream>

using namespace std;
struct LIBRARY
{
	char number[20];
	char FIO[30];
	char name[30];
	int year;
	int kolvo;
};

struct ITEM
{
	LIBRARY *Library;
	ITEM *next;
};

ITEM * create(LIBRARY * Library) 
{
   ITEM *head=new ITEM;
   head->Library=Library;
   head->next=NULL;
   return head;
}

void add(LIBRARY *Library, ITEM* head)
{
	while (head->next)
		head=head->next;
	head->next=new ITEM;
	head->next->Library=Library;
	head->next->next=NULL;
	cout<<endl;
}

LIBRARY *make() 
{
    LIBRARY *Library=new LIBRARY;
        
    cout<<"Enter book nomer: ";
    cin.getline(Library->number,30);
 
    cout<<"Enter FIO: ";
    cin.getline(Library->FIO,30);
 
    cout<<"Enter book name: ";
    cin.getline(Library->name,40);
 
    cout<<"Enter made year: ";
    cin>>Library->year;
 
    cout<<"Enter count of books: ";
    cin>>Library->kolvo;
 
    return Library;
}
void printLIBRARY(LIBRARY *Library) //вывод на экран  
{
     
    cout<<"Number of book => "<<Library->number<<endl;
    cout<<"FIO => "<<Library->FIO<<endl;
    cout<<"Name of book => "<<Library->name<<endl;
    cout<<"Year => "<<Library->year<<endl;
    cout<<"Count of book => "<<Library->kolvo<<endl;    
    cout<<endl;
}

ITEM* remove(ITEM *str)
{
	ITEM *tail=str, *head=str;
	char nomer[30];
	cout<<"Enter name of book"<<endl;
	cin.getline(nomer, 30);
	while(head)
	{
		if (!strcmp(nomer, head->Library->name))
		{
			head->Library=NULL;
			if (tail==head)
				str=head->next;
			tail->next=head->next;
			tail = head;
			head=head->next;
		}
		else head=head->next;
	}
	cout<<"Information about book deleted"<<endl;
	return str;
}

int choice()
{
	int answer;
	cout<<"Add new books - enter 1"<<endl;
    cout<<"Print LIBRARY - enter 2"<<endl;
    cout<<"Delete book - enter 3"<<endl;
    cout<<"Exit - enter 4"<<endl<<endl;
    cout<<"Enter your choice: ";
	cin>>answer;
    if(answer>=1 && answer<=5)
      return answer;
    else
      return 0;
}

int main()
{
	ITEM *head=NULL;
	int ch;
	while(1)
	{
		ch=choice();
		if (ch==1)
		{
			cout<<endl;
			
			if(head==NULL)
				head=create(make());
			else
				add(make(),head);
		}
		else if (ch==2)
		{
           cout<<endl;
           int i=0;
           int N=0;
           
           ITEM *phead=head;
           while (head)
           {
               N++;
               head=head->next;
           }
 
           LIBRARY *buf;
           LIBRARY **pLibrary=new LIBRARY*[N];
           head=phead;
           
           while (head)
           {
                   pLibrary[i]=head->Library;
                   head=head->next;
                   i++;
               }
 
           head=phead;
             for (i=0;i<N;i++)
                   printLIBRARY(pLibrary[i]);   
       }
		else if (ch==3)
		{
			head=remove(head);
		}
		else if (ch==4)
		{
			break;
			cout<<endl;
		}
		
		}
		return 0;
	}
Novichok_help вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C] Односвязные списки acmilanfan Помощь студентам 0 17.05.2012 23:22
Односвязные списки. Killspamers Помощь студентам 7 19.03.2012 18:59
Односвязные списки Nike0 Общие вопросы C/C++ 0 26.12.2010 12:07
Односвязные списки Anna T Паскаль, Turbo Pascal, PascalABC.NET 2 19.12.2010 18:58
Односвязные списки art_stalker Общие вопросы C/C++ 5 21.04.2010 22:49