Министерство образования и науки Р.Ф.
Новосибирский государственный технический университет.
Кафедра ПМт.
Лабораторная работа по ООП №5
(Прямоугольник)
Факультет : ПМИ
Группа : ПМ-72
Преподаватель : Еланцева И. Л.
Студент : Щеголев В. С.
2008г.
1. Ознакомиться с понятиями шаблона, инстанцирования.
2. Путем модификации программ, разработанных в лабораторных работах № 3,4, разработать шаблон контейнера для хранения объектов классов, реализующих геометрические фигуры.
2.1. Преобразовать класс-контейнер, разработанный в лабораторной работе №3, в шаблон, так чтобы элементами контейнеров могли быть различные классы, разработанные в лабораторной работе №4 (при различном инстанцировании шаблона).
2.2. Разработать функцию, демонстрирующую поведение разработанного шаблона: провести инстанцирование шаблона для каждого из классов-фигур, продемонстрировать их функционирование.
3. Подготовить текстовые файлы с разработанной программой, используя текстовый редактор, оттранслировать их, собрать и выполнить программу с учетом требований операционных систем и программных оболочек, в которых эта программа выполняется. При необходимости исправить ошибки и вновь повторить технологический процесс решения задачи.
4. Оформить отчет по лабораторной работе. Отчет должен содержать постановку задачи, описание разработанных классов, алгоритм, текст разработанной программы и результаты тестирования.
5. Защитить лабораторную работу, ответив на вопросы преподавателя.
Шаблон двунаправленного списка:
template<class obj> class list
{
private:
struct member
{
obj rect;// ячейка содержащая оьъект
int number;//ячейка содержащая номер объекта
member *next;//указтель на следующий элемент списка
member *prev;//указатель на предыдущиий элемент списка
};
member *fined;//глобальный указатель на элемент списка
member *last_memb;//указатель на последний элемент списка
member *first_memb;//указатель на первый элемент списка
int poiskOB(int n);//поиск элемента содержащий номер объекта
public:
list();//конструктор
~list();//диструктор
void show_pr();//показ номеров объектов
int poisk(int n, obj *fined);//поиск объекта
void add(int n, obj rect1);//добавление объекта в список
void delete_el(int n);//удаление элемента с заданным номером
};
6. Текст разработанной программы :
Основной модуль:
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <graphics.h>
#include "FIGURE.cpp"
#include "KONTUR.cpp"
#include "FILL.cpp"
#include "FULL.cpp"
#include "COMBO.cpp"
#include "member.cpp"
int a[4],b[4];
int zt, zc, lt, lw, lc;
void main()
{
FILE *gf,*gf1;
gf=fopen("geometry.txt","r");
FILE *pf;
pf=fopen("painting.txt","r");
list<kontur> k;
list<fillfigure> f;
list<combo> c;
kontur k1;
fillfigure f1;
combo c1;
int n;
while(fscanf(gf,"%d",&n)!=EOF)//заполнение списков с объектами konturи fillfigure
{
fscanf(gf,"%d %d %d %d",&a[0],&a[1],&a[2],&a[3]);
fscanf(pf,"%d %d %d %d %d",&zt, &zc, <, &lw, &lc);
if(lc==zc || lc==0 )
{
do
{
if(lc==zc)
{
printf("\ncvet linii & cvet zalivki dolzhny byt' razlihny\n");
printf("\ncvet linii-");
scanf("%d",&lc);
}
if(lc==0)
{
printf("\ncvet linii & cvet fona dolzhny byt' razlihny\n");
printf("\ncvet linii-");
scanf("%d",&lc);
}
}
while(lc==0 || lc==zc);
}
k1.setgeom(a);
k1.setgraph(lt, lw, lc);
f1.fill::setgraph(zt, zc);
k.add(n,k1);
f.add(n,f1);
}
fclose(gf);
fclose(pf);
gf1=fopen("geom.txt","r");
while(fscanf(gf1,"%d",&n)!=EOF)// заполнение списка с объектами combo
{
fscanf(gf1,"%d %d %d %d",&b[0],&b[1],&b[2],&b[3]);
if(lc==zc || lc==0 )
{
do
{
if(lc==zc)
{
printf("\ncvet linii & cvet zalivki dolzhny byt' razlihny\n");
printf("\ncvet linii-");
scanf("%d",&lc);
}
if(lc==0)
{
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.