Обработка динамических структур данных

Автор работы: Пользователь скрыл имя, 20 Июля 2015 в 18:55, курсовая работа

Описание работы

Разработать алгоритм и составить программу обработки списка данных «Гостиница», выполнив следующие этапы:
1. Представление (построение, создание) списка данных в виде линейного однонаправленного списка с элементами сложного типа
2. Выполнить удаление из исходного списка сведений о гостиницах, в которых нет свободных номеров
3. Выполнить перемещение в начало исходного списка сведений о пятизвёздочных гостиницах

Файлы: 1 файл

Обработка динамических структур данных.doc

— 851.00 Кб (Скачать файл)

Q=BegQ;//указатель списка  в начало

t=0;//обнулнение счетчика

while(Q!=NULL)//пока не конец  списка

{if(stricmp(Q->data.nazvanie,Data)==0)//если  элемент найден то увеличение  счетчика

{cout<<"nazavanie - "<<Q->data.nazvanie<<" class - "<<Q->data.class_<<endl;//печать элемента в файл

t++;//увеличение счетчика

}

Q=Q->next;//переход на следующий  элемент

}

if(t>0)//если элемент списка  равен искомому

{cout<<"Zapis' naidena "<<t<<" raz(a)"<<endl;

}

else

{cout<<"Zapis' ne naidena"<<endl;

}

}

void sspisok::sp_copy_file(void)//копирование списка в файл

{ofstream file("C:\\ftext_from.txt");//создание файла

Q=BegQ;//смещение указателя

while(Q!=NULL)//пока не конец  списка

{file<<"Nazvanie - "<<Q->data.nazvanie<<" Klass - "<<Q->data.class_<<" kol-vo_o - "<<Q->data.kolichestvo_o<<" kol-vo_s - "<<Q->data.kolichestvo_s<<" Cena - "<<Q->data.cena<<endl;//печать элемента в файл

Q=Q->next;//переход на следующую  позицию

}

}

 

void sspisok::file_copy_sp()//копирование  данных из файла в список

{data_ x;//переменная для  считывания из файла

ifstream file("C:\\ftext_in.txt");//открытие файла

if(file!=NULL)

{cout<<"File Soderzhit sleduiushie elementi:"<<endl;

cout<<" Nazvanie Klass Kol-vo obshee Kol-vo svobodnoe Cena"<<endl<<endl;

 

while(!file.eof())//пока не конец  файла

{

 

file>>x.nazvanie;

cout.width(8);cout<<x.nazvanie;

file>>x.class_;

cout.width(10);cout<<x.class_;

file>>x.kolichestvo_o;

cout.width(10);cout<<x.kolichestvo_o;

file>>x.kolichestvo_s;

cout.width(18);cout<<x.kolichestvo_s;

file>>x.cena;

cout.width(20);cout<<x.cena<<endl;;

sspisok::add_data(x);//вызов метода  класса и добавление элемента  в список

}

}

else

{cout<<"File C:\\ftext_in.txt ne naiden"<<endl;

}

}

 

void sspisok::peremesh()

{int n=0;

spisok *Q2;//буфер

Q2=new spisok;

Q=BegQ;//смещение указателя

while(Q->next!=NULL)//пока не  начало списка

{ n++;

if(Q->next->data.class_==5)

{ cout<<" n="<<n<<endl;

Q2=Q->next;

Q->next=Q->next->next;

Q2->next=BegQ;

BegQ=Q2;

 

}

 

Q=Q->next;//переход на следующую  позицию

}

}

 

 

void sspisok::udalenie()

{spisok *p;

int n=0;

if((BegQ!=NULL)&&(EndQ!=NULL))

{

p=BegQ;

while(p!=NULL)

{n++;

 

if(p->data.kolichestvo_s==0)

{sspisok::delete_data(n);

n--;//возврат индекса к  предыдущему элементу

}

p=p->next;

};

}

if((BegQ==NULL)&&(EndQ==NULL))//если  список пустой

{cout<<"Spisok pustoi ili ne sozdan"<<endl;

}

else

Приложение А(продолжение)

if((BegQ->data.kolichestvo_o==NULL)&&(EndQ->data.kolichestvo_o==NULL))//проверка на пустоту списка

{cout<<"Spisok pustoi"<<endl;//вывод  соотв. сообщения

};

}

int main(array<System::String ^> ^args)

{sspisok x;//объект класса

int vibor;//для меню

long i,n;//i-для циклов,n-для  количесва

long j;//для прочих целей

BegQ=NULL;//обнуление указателя

EndQ=NULL;//обнуление указателя

Q=NULL;//обнуление указателя

 

//////////////////////////меню///////////////////////////

 

while(vibor!=0)

{system("cls");

cout<<"Menu"<<endl;

cout<<"1.Sformirovat spisok"<<endl;

cout<<"2.Dobavit zapis'"<<endl;

cout<<"3.Udalit' zapis'"<<endl;

cout<<"4.Otobrazit spisok"<<endl;

cout<<"5.Skoirovat v Fail"<<endl;

cout<<"6.Skopirovat v Massiv"<<endl;

cout<<"7.Otobrazit Massiv"<<endl;

cout<<"8.Sortirovat Massiv"<<endl;

cout<<"9.Skopirovat iz Faila"<<endl;

cout<<"10.Nayti zapis' v spiske"<<endl;

cout<<"11.Udalenie otelei bez svobodnih nomerov"<<endl;

cout<<"12.Peremeshenie 5-ti zvezdochnih gostinic"<<endl;

cout<<"0.Vyhod"<<endl;

cout<<endl<<endl;

cout<<"Vyberite:_";

cin>>vibor;

system("cls");

if(vibor==1)//формирование списка

{x.form();//формирование списка

}

 

if(vibor==2)//ввод данных

{if((BegQ!=NULL)&&(EndQ!=NULL))

{cout<<"Skolko Zapisey vvesti"<<endl;

cout<<"n=";

cin>>n;//ввод количества

 

 

for(i=0;i<n;i++)

{

cout<<"Nazvanie -";

cin>>Data.nazvanie;//ввод данных

cout<<"Klass-";

cin>>Data.class_;

cout<<"Obshee kolichestvo-";

cin>>Data.kolichestvo_o;//ввод данных

cout<<"Kolichestvo svobodnih-";

cin>>Data.kolichestvo_s;//ввод данных

cout<<"Cena-";

cin>>Data.cena;

x.add_data(Data);//добавление элемента в список

}

}

if((BegQ==NULL)&&(EndQ==NULL))

{cout<<"Spisok ne sozdan"<<endl;

}

}

if(vibor==3)//удаление элемента

{if((BegQ!=NULL)&&(EndQ!=NULL))

{cout<<"Vvedite nomer zapisi kotoruyu nuzhno udalit"<<endl;

cout<<"n=";

cin>>j;//ввод номера удаляемого  элемента

x.delete_data(j);//удаление элемента

}

if((BegQ==NULL)&&(EndQ==NULL))

{cout<<"Spisok ne sozdan"<<endl;

}

}

 

if(vibor==4)//вывод элементов  на экран

{x.show_sp();//вывод списка  на экран

}

Приложение А(продолжение)

 

if(vibor==5)//копировать в файл

{if((BegQ!=NULL)&&(EndQ!=NULL))

{cout<<"Dannie skopirovani v fail, po adresu C:\\ftext_from.txt"<<endl;

x.sp_copy_file();//копирование данных  в список

}

if((BegQ==NULL)&&(EndQ==NULL))

{cout<<"Spisok ne sozdan"<<endl;

}

}

 

if(vibor==6)//копировать в массив

{if((BegQ!=NULL)&&(EndQ!=NULL))

{x.sp_copy_mas();//копирание данных  в массив

cout<<"V spiske "<<nn<<" - elementov"<<endl;//вывод сообщения  о количестве элементов

cout<<"Spisok skopirovan v massiv"<<endl;

}

if((BegQ==NULL)&&(EndQ==NULL))

{cout<<"Spisok ne sozdan"<<endl;

}

}

 

if(vibor==7)//вывод массива

{if((BegQ!=NULL)&&(EndQ!=NULL))

{cout<<"Vivod massiva"<<endl;

x.show_mas(nn);//вывод массива на экран

}

if((BegQ==NULL)&&(EndQ==NULL))

{cout<<"Spisok ne sozdan"<<endl;

}

}

 

if(vibor==8)//сортировать массив

{if((BegQ!=NULL)&&(EndQ!=NULL))

{x.sort_mas(nn);//сортировка массива

cout<<"Massiv otsortirovan"<<endl;

x.show_mas(nn);//вывод массива на экран

}

if((BegQ==NULL)&&(EndQ==NULL))

{cout<<"Spisok ne sozdan"<<endl;

}}

Приложение А(продолжение)

if(vibor==9)//сформировать файл из списка или добавить элементы в список из файла

{if((BegQ!=NULL)&&(EndQ!=NULL))

{x.file_copy_sp();

}

if((BegQ==NULL)&&(EndQ==NULL))

{cout<<"Spisok ne sozdan"<<endl;

}

}

 

if(vibor==10)//найти элемент  в массиве

{if((BegQ!=NULL)&&(EndQ!=NULL))

{cout<<"Vvedite nazvanie gostinici kotoruiu nuzhno naiti:_"<<endl;

cout<<"Gostinica-";

cin>>Data.nazvanie;//ввод данных

x.find_data(Data.nazvanie);//поиск элемента

}

if((BegQ==NULL)&&(EndQ==NULL))

{cout<<"Spisok ne sozdan"<<endl;

}

}

 

if(vibor==11)

{if((BegQ!=NULL)&&(EndQ!=NULL))

{ x.udalenie();

cout<<"Gostinici bez svobodnyh nomerov udaleny"<<endl;

x.show_sp();

}

}

if(vibor==12)

{if((BegQ!=NULL)&&(EndQ!=NULL))

{ x.peremesh(); x.peremesh();

cout<<"5-ti zvezdochnie gostinici v nachalo spiska"<<endl;

x.show_sp();

}

}

getch();

 

}

}

 

Приложение Б

 

Рисунок Б.1 – Блок-схема основной части программы

 

Рисунок Б.2- блок-схема функции «form ()»

 

 

Рисунок Б.3- блок-схема функции «add_data ()»

 

 

Рисунок Б.4- блок-схема функции « delete_data ()»

 

 

Рисунок Б.5- блок-схема функции « show_sp ()»

 

 

Рисунок Б.6- блок-схема функции «sp_copy_file()»

 

 

Рисунок Б.7- блок-схема функции «sp_copy_mass()»

 

 

Рисунок Б.8- блок-схема функции «show_mass()»

 

 

Рисунок Б.9- блок-схема функции «sort_mass()»

 

 

Рисунок Б.10- блок-схема «file_copy_sp()»

 

 

Рисунок Б.11- блок-схема функции «find_data()»

 

 

Рисунок Б.12- блок-схема функции «udalenie ()»

 

 

Рисунок Б.13- блок-схема функции «peremesh ()»

Размещено на Allbest.ur

 


Информация о работе Обработка динамических структур данных