Разработка класса контейнера, реализующего понятие множества без дубликатов (Лабораторная работа № 3)

Страницы работы

7 страниц (Word-файл)

Содержание работы

Министерство Образования и Науки Российской Федерации

НГТУ

Кафедра прикладной математики

Лабораторная работа №3

по объектно-ориентированному программированию

Факультет: ПМИ

Группа: ПМИ-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)

Похожие материалы

Информация о работе