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

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

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

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

Файлы: 1 файл

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

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

 

Полученный результат

 

 

Вывод: полученный результат совпал с ожидаемым

  1. Сортировка

Шаг 1. Выбрать в меню пункт сортировка массива(8);

Шаг 2. Проверить результаты сортировки;

 

Ожидаемый результат:

Название

Класс

Общее количество мест

Количество свободных мест

Минимальная Цена

Gomer

1

15

2

100

Gagas

1

20

1

80

Lelik

2

30

10

120

Oleg

1

30

25

100

Fox

2

45

11

500

Toll

1

50

21

200

Kira

1

50

10

150

Max

3

100

22

400

GHOST

5

120

32

5000

Milana

4

120

32

2000

Kiska

4

120

32

2000

Kinder

3

130

22

200

Apple

2

200

35

220

Dobi

3

250

65

400

Toto

4

250

13

1300

Gosha

2

250

21

1200

Lumos

4

250

34

4600

Alex

4

300

23

5500

Ermak

3

320

23

150

jIjI

3

320

23

4500

Pappa

3

330

125

2000

Polli

5

450

65

3500

Sandra

3

450

35

4000

Hippo

4

450

125

2000

Evas

4

500

12

1200

GoGs

5

550

36

5000

Reg

5

600

254

5500

Finnish

4

600

32

6000

Rex

4

600

36

6000

UFO

5

750

32

6000

Frank

5

777

120

5000


 

Полученный результат:

 

 

Вывод: полученный результат совпал с ожидаемым.

  1. Загрузка данных из файла

Шаг 1. Выбрать в меню пункт копирование из файла (9);

Шаг 2. Проверить результаты загрузки

Ожидаемый результат:

 

 

Полученный результат:

 

 

Вывод: полученный результат совпал с ожидаемым.

 

 

Заключение

 

В данной курсовой работе были разработаны и обработаны массивы структур. Программа курсовой работы даёт возможность обработать данные одномерных списков. Все полученные результаты совпали с ожидаемыми, а именно: при выводе списка на экран были показаны все те данные, что вводились при создании; удалены данные, в соответствии с пустыми турами; страны были упорядочены по возрастанию количества билетов. Следовательно, программа работает правильно.

 

 

Список используемой литературы

 

  1. Дональд К. «Искусство программирования. 3 том. Сортировка и поиск».
  2. Хэзфилд Р., Кирби Л. «Искусство программирования на C++. Фундаментальные алгоритмы, структуры данных и примеры приложений».
  3. Либерти Д. «Освой самостоятельно С++»
  4. Лафоре Р. «Объектно- ориентированное программирование в С++».
  5. Подбельский В. «Язык Cu ++: Учебное пособие».
  6. Жарков В. «Visual C++».

 

 

Приложение А

 

// Курсовая_Отель.cpp : main project file.

 

#include <malloc.h>//для динамических массивов

#include <iostream>//для cin cout

#include <conio.h>//для getch()

#include <fstream>//для файлов

#include <stdio.h>//стандартный ввод вывод

#include <string.h>//библиотека  работы со строками

 

using namespace std;

 

typedef struct data_{char nazvanie[255];//название гостиницы

int class_;//класс гостиницы 1-5

int kolichestvo_o;//количество мест  общее

int kolichestvo_s;//количество мест  свободное

int cena;//стоимость номера  в сутки

};

 

typedef struct spisok{data_ data; //структура  однонаправленного списка

spisok* next;

};

 

spisok *BegQ,*EndQ,*Q;//BegQ-начало списка,EndQ-конец списка//Q-основной список

data_ Data;//Data-для ввода данных

data_ *c;//динамическая переменная  для массива

data_ *d;//дополнительный массив  для сортировки

long nn;//количество элементов  в массиве

class sspisok {public:

void form(void);//процедура формирования  списка

void add_data(data_);//добавления  элемента в конец списка список

void show_sp(void);//просмотр списка  данных

void delete_data(long);//удаление элемента  списка

 

void sp_copy_mas();//процедура копирования списка данных в массив

void sort_mas(long);//процедура сортировки  массива

void show_mas(long);//вывод массива

void find_data(char*);//поиск в массиве,т.к.линейный

void sp_copy_file(void);//процедура  копирования из списка в файл

void file_copy_sp();//процедура заполнения списка из файла

void peremesh();//перемещение 5-ти  звёздочных гостиниц в начало  списка

void udalenie();//удаление гостиниц  без свободных номеров

};

 

void sspisok::form(void)//процедура  формирования однонаправленного  списка,Q-сам список

//так как спискок кольцевой  начало списка обозначим меткой,значением -1

{Q=new spisok;//создание самого  списка

BegQ=new spisok;//создание указателя  на начало

EndQ=new spisok;//создание указателя  на конец

BegQ->next=EndQ;//начало ссылается  на конец

EndQ->next=NULL;//списорк ссылается в конец,а конец в никуда

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

Q->next=EndQ;//след. эл. ссылается  в конец

BegQ->data.kolichestvo_o=NULL;//обнуление  полей данных

EndQ->data.kolichestvo_o=NULL;//обнуление  полей данных

cout<<"Sozdan spisok"<<endl;

}

 

void sspisok::add_data(data_ Data)//добавление данных

{spisok *p;//для добавления  элемента

//для первого элемента

if((BegQ->data.kolichestvo_o==NULL)&&(EndQ->data.kolichestvo_o==NULL))//если  список пустой в полях данных

{Q->data=Data;//заполняем поле данных

Q->next=NULL;//указатель следующего  элемента пустота

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

BegQ=Q;//начало списка ссылается  на список

Q=BegQ;//список переносим  в начало списка

EndQ=BegQ;//конец приравниваем  началу

EndQ=Q;//конец списка

BegQ->next=EndQ;//начало ссылается на конец

EndQ->next=NULL;//списорк ссылается  в конец,а конец в никуда

}

else

//для всех остальных

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

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

}

else

 

{p=new spisok;//создаем переменную  динамическую

p->data=Data;//в поле данных  заносим данные

p->next=NULL;

EndQ->next=p;//следующий после  конца это добавленный элемент

EndQ=p;//смещаем конец на  добавленный элемент

};

 

}

 

void sspisok::delete_data(long n)//удаление n-ного элемента списка

{spisok *p;//

long i;//счетчик

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

{p=BegQ;//передача адреса

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

{p=p->next;//смещение указателя

}

p->next=p->next->next;//удаление  элемента

cout<<"bil udalen "<<n<<"-ii element "<<endl;

};

//на случай удаления  первого элемента

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

{BegQ=BegQ->next;

cout<<"bil udalen "<<n<<"-ii element "<<endl;

};

 

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;//вывод  соотв. сообщения

};

}

 

void sspisok::show_sp(void)//просмотр списка

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

if(Q->data.kolichestvo_o!=NULL)

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

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

{

cout.width(8);

cout<<Q->data.nazvanie;

cout.width(10);

cout<<Q->data.class_;

cout.width(10);

cout<<Q->data.kolichestvo_o;

cout.width(18);

cout<<Q->data.kolichestvo_s;

cout.width(20);

cout<<Q->data.cena<<endl;

 

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

}

}

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

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

}

else

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

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

};

}

 

void sspisok::sp_copy_mas()//копирование списка в массив

{long i,n;//n-для определения  количества элементов в списке,i-для  цикла

 

//если в списке что  то есть

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

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

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

{n++;

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

}

c=(data_*)malloc(n*sizeof(data_));//создания  динамического массива

nn=n;//передача количества  элементов списка в глобальную  переменную для сортировки

Q=BegQ;

//копирование списка в  массив

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

{c[i]=Q->data;

Q=Q->next;

}

//если элементы не обнаружены

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

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

}

else

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

{cout<<"Spisok pustoi"<<endl;

};

};

 

void sspisok::sort_mas(long n)//сортировка массива

// сортировка

{data_ tmp;

for (int i = 1; i < n; i++) {

for (int j = 0; j < n-i; j++) {

if (c[j].kolichestvo_o > c[j+1].kolichestvo_o) {

tmp = c[j];

c[j] = c[j+1];

c[j+1] = tmp;

}

}

}

};

 

void sspisok::show_mas(long n)//вывод массива

{long i;//счетчик

//вывод массива по циклу

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

 

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

{ cout.width(8);

cout<<c[i].nazvanie;

cout.width(10);

cout<<c[i].class_;

cout.width(10);

cout<<c[i].kolichestvo_o;

cout.width(18);

cout<<c[i].kolichestvo_s;

cout.width(20);

cout<<c[i].cena<<endl;

 

}

cout<<endl;//переход на  новую строчку

}

 

void sspisok::find_data(char Data[255])

{long t;//t-количество найденных  элементов

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