Министерство Образования и Науки Российской Федерации
НГТУ
по объектно-ориентированному программированию
Группа: ПМИ-61
Студент: Снегирева А.А.
Преподаватель: Еланцева И.Л.
г.Новосибирск, 2008 г.
1. Условие задачи
Разработать класс контейнер, реализующий понятие множества без дубликатов. Функция поиска ищет фигуры с заданными геометрическими параметрами. Множество реализовать на основе двунаправленного списка (обеспечить «распечатку» содержимого, как в прямом, так и в обратном направлениях)
2. Алгоритм
Метод решения:
Опишем контейнер как класс [динамический двунаправленный список], позволяющий хранить элементы – объекты класса one_ring (класс, описывающий окружность) в списке и оперировать над этим списком. Все действия осуществляются через методы класса, внутренняя структура скрыта от пользователя. Для хранения элементов используется двунаправленный список с заглавным звеном, информационное поле элементов которого хранит геометрические характеристики фигур. Поиск осуществляется последовательным перебором.
3. Текст программы:
/******************Класс окружность*********************/
#include<graphics.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
int a,b,c,x2,y2,R2,color2,maxx,maxy,z,q,w,e,f,g,h;
FILE*fp;
FILE*fp2;
//----------------------------------------------------------------------------------------//
class one_ring
{public:
void one_ring::enter_coordinates();
void one_ring::paint();
void one_ring::flooding();
void one_ring::in_put();
void one_ring::check_up();
void one_ring::check_up_in_put();
void one_ring::movement();
void one_ring::options();
void one_ring::scan_from_file();
void one_ring::save_to_file();
void one_ring::set_col(int f){color=f;}
void one_ring::set_back(int g){background=g;}
void one_ring::set_wid(int h){width=h;}
void one_ring::set_coord(int a,int b,int c){x=a;
y=b;
R=c;}
int one_ring::get_col(){return color;}
int one_ring::get_back(){return background;}
int one_ring::get_wid(){return width;}
int one_ring::get_x(){return x;}
int one_ring::get_y(){return y;}
int one_ring::get_R(){return R;}
private:
int x;
int y;
int R;
int color;
int background;
int width;
};
//----------------------------------------------------------------------------------------//
void one_ring::enter_coordinates()
{printf("\nEnter coordinates and radius.\n");
scanf("%d%d%d",&a,&b,&c);
}
/*********************Класс контейнер*************************/
#include<graphics.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include"Z:\oop2-1.cpp"
one_ring HELP;
class container
{public:struct och
{och *next;
och *pred;
one_ring Circle;};
public:och *u,*temp;
public:void add_el(){u->next=new och;
u->next->pred=u;
u=u->next;
u->next=NULL;
HELP.enter_coordinates();
// HELP.check_up();
u->Circle.set_coord(a,b,c);
f=0;
g=15;
h=1;
u->Circle.set_col(f);
u->Circle.set_back(g);
u->Circle.set_wid(h);};
public:void search_el(){int x,y,r;
printf("\nEnter coordinates and radius of searching figure.\n");
scanf("%d%d%d",&x,&y,&r);
while(u->pred!=NULL)u=u->pred;
while((u->next!=NULL)&&(u->Circle.get_x()!=x&&u->Circle.get_y()!=y&&u->Circle.get_R()!=r))
{u=u->next;}
if(u->Circle.get_x()==x&&u->Circle.get_y()==y&&u->Circle.get_R()==r)
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.