
28.03.2008, 23:12
|
|
Новичок
Регистрация: 08.02.2008
Сообщений: 12
Провел на форуме: 64407
Репутация:
2
|
|
Прошу, коментируем
Код:
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
string rus(char s[ ]);
struct book
{ char avtor[20];
char name[20];
int year;
};
struct element
{ book info;
element *next;
element *prev;
};
void add_l(element *&list,element *&list2); // 1
bool empty(element *&list); // 2
void del_r(element *&list2,element *&list); // 3
void del_l(element *&list,element *&list2); // 4
void output_l(element *&list,element *&list2); // 5
void del(element *&list,element *&list2); // 6
void output(element *list); // 7
void menu();
int main()
{ int i;
element *in=NULL;
element *inout=NULL;
while(true)
{ menu();
cin>>i;
clrscr();
switch(i)
{
case 1: add_l(in,inout); break;
case 2: empty(in); break;
case 3: del_r(inout,in); break;
case 4: del_l(in,inout); break;
case 5: output_l(in,inout); break;
case 6: del(inout,in); break;
case 7: output(in); break;
default: cout<<rus("\nневерный номер.\n");
case 0: return 0;
}
}
}
void add_l(element *&list,element *&list2)
{
element *t;
t=new element;
cout<<rus("введите автора: ")<<endl;
cin.get();
cin.getline(t->info.avtor,20);
cout<<rus("введите название: ")<<endl;
cin.getline(t->info.name,20);
cout<<rus("веедите год: ")<<endl;
cin>>t->info.year;
if(list==NULL)
{
list2=list=t;
t->next=0;
t->prev=0;
}
else
{
list->prev=t;
t->prev=0;
t->next=list;
list=t;
}
}
bool empty(element *&list)
{
if(list==0)
{cout<<rus("дек пуст.");
return true;}
else
{return false;}
}
void del_r(element *&list2,element *&list)
{
element *p;
if(!empty(list))
if(list==list2)
{
p=list2;
list=list2=0;
delete p;
}
else
{
p=list2;
list2=list2->prev;
list2->next=0;
delete p;
}
}
void del_l(element *&list,element *&list2)
{
element *p;
if(!empty(list))
if(list==list2)
{
p=list;
list=list2=0;
delete p;
}
else
{
p=list;
list=list->next;
list->prev=0;
delete p;
}
}
void output_l(element *&list,element *&list2)
{
if(!empty(list))
{
cout<<rus("автор: ")<<list->info.avtor<<endl;
cout<<rus("название: ")<<list->info.name<<endl;
cout<<rus("год: ")<<list->info.year<<endl;
cout<<"---------------------------------------------"<<endl;
cout<<"--------------------OK-----------------------";
}
}
void del(element *&list2,element *&list)
{
while(!empty(list))
del_r(list2,list);
}
void output(element *list)
{
if(!empty(list))
{
element *t;
t=list;
while(t!=0)
{
cout<<rus("Автор: ")<<t->info.avtor<<endl;
cout<<rus("Название: ")<<t->info.name<<endl;
cout<<rus("Год издания: ")<<t->info.year<<endl;
cout<<"*********************************************"<<endl;
t=t->next;
}
}
}
void menu()
{
cout<<rus("\n Выберите:\n");
cout<<rus("\n1. Добавление элемента слева.");
cout<<rus("\n2. проверка дека на отсутствие в нем элементов");
cout<<rus("\n3. удаление элемента справа.");
cout<<rus("\n4. удаление элемента слева.");
cout<<rus("\n5. получение значения левого элемента.");
cout<<rus("\n6. удаление всех элементов.");
cout<<rus("\n7. вывод дека.");
cout<<rus("\n0. завершение проги.");
cout<<rus("\n\n выберите:");
}
string rus(char s[ ]) // Перевод кодировки из Windows в Dos
{
string t;
int i=0;
t=s;
while (t[i]!=0)
{
if (t[i]>='А' && t[i]<='п')
t[i]-=64;
if (t[i]>='р' && t[i]<='я')
t[i]-=16;
i++;
}
return t;
}
|
|
|