Объектно-ориентированное программирование. Объекты

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

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

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

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РФ

НГТУ

КАФЕДРА ПРИКЛАДНОЙ МАТЕМАТИКИ

ЛАБОРАТОРНАЯ РАБОТА № 3

ПО ДИСЦИПЛИНЕ:

ОБЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ

«ОБЪЕКТЫ»

ФПМИ

ГРУППА: ПМ-21

СТУДЕНТ: Воронов А.С.

ПРЕПОДАВАТЕЛЬ: Полетаева И. А.

НОВОСИБИРСК 2003 г.

  1. Условие задачи

Разработать программу  на языке С++, в которой был бы определен класс-контейнер для объектов класса, разработанного в предыдущей лабораторной работе. Контейнер должен быть реализован как динамическая структура данных, для представления элементов контейнера разработать класс типа «элемент». Предусмотреть функции для  помещения объектов-фигур в контейнер, их удаления, поиска в контейнере, «распечатки содержимого» контейнера – последовательного вывода на экран содержащихся в объекте-контейнере фигур.

  1. Текст программы

Основной файл Vor3.cpp

#include "vor3_f.cpp"

void main()

{int gd,gm,error,i=0;

spis_Sect spis;

clrscr();

detectgraph(&gd,&gm);

initgraph (&gd,&gm,"c:\\borlandc\\bgi");

error=graphresult();

if (error!=grOk)

{printf ("Oshibka graph");

printf (grapherrormsg(error));

exit (1);

}

// ----- Рисование меню Рисование меню Рисование меню-----------------while (i!=4)

{

i=mainmenu();

switch (i)

{case 1:{spis=print_menu(spis); break;}

case 2:{spis=options(spis); break;}

case 3:{spis=dann(spis); break;}

} }

closegraph();

}

Дополнительный файл vor3_f.cpp

#include <stdio.h>

#include <graphics.h>

#include <conio.h>

#include <stdlib.h>

typedef class sect

{int x,y,r1,r2,fillStyle,lineColor,fillColor,nu1,ku1,nu2,ku2;

public:

void interDan(void);          //  Ввод данных о фигуре

void showDan(void);           //  Вывод данных о фигуре

void drawSect(void);          //  Рисование фигуры

void save(void);            //  Сохранение данных в файл

short load(void);            //  Загрузка из файла

void change(void);            //  Изменение параметров сектора

void setfillStyle(int);

void setfillColor(int);

sect(){x=320;y=240;r1=50;r2=25;nu1=0;ku1=360;nu2=10;ku2=350;

fillStyle=1;lineColor=15;fillColor=0;}

};

void sect::drawSect()

{cleardevice();

setfillstyle (fillStyle,fillColor);

pieslice (x,y,nu1,ku1,r1);

setfillstyle (1,0);

pieslice (x,y,nu2,ku2,r2);

}

void sect::change()

{int c=-1;

drawSect();

while ((c=getch())!=27)

{switch (c)

{case 'w': {if (r1<240) r1+=5; break;}

case 's': {if (r1>r2) r1-=5; break;}

case 't': {if (r1>r2) r2+=5; break;}

case 'g': {if (r2>0) r2-=5; break;}

case 'a': {if (nu1<nu2) nu1+=1; break;}

case 'z': {if (nu1>0) nu1-=1; break;}

case 'd': {if (ku1<360) ku1+=1; break;}

case 'c': {if (ku1>ku2)ku1-=1; break;}

case 'f': {if (nu2<ku2) nu2+=1; break;}

case 'v': {if (nu2>nu1) nu2-=1; break;}

case 'h': {if (ku2<ku1) ku2+=1; break;}

case 'n': {if (ku2>nu2) ku2-=1; break;}}

drawSect();}

}

void sect::setfillStyle(int i)

{fillStyle=i;}

void sect::setfillColor(int i)

{fillColor=i;}

void sect::interDan()

{outtextxy (330,80,"Введите радиус сектора");

do

{gotoxy(50,8);

scanf ("\n%d",&r1);}

while (r1<0);

r2=r1;

outtextxy (330,140,"Введите начальный и конечный углы");

gotoxy(50,12);

scanf ("\n%d%d",&nu1,&ku1);

nu2=nu1;

ku2=ku1;

outtextxy (330,200,"При рисовании 2-го сектора его");

outtextxy (330,220,"данные равны 1-му");

getch();}

void sect::save()

{FILE *f=fopen ("sect.txt","w");

fprintf (f,"%d %d %d %d %d %d %d %d",r1,r2,nu1,nu2,ku1,ku2,fillStyle,fillColor);

fclose (f);}

short sect::load()

{FILE *f=fopen ("sect.txt","r");

if (f==NULL) return 0;

fscanf (f,"%d%d%d%d%d%d%d%d",&r1,&r2,&nu1,&nu2,&ku1,&ku2,&fillStyle,&fillColor);

fclose (f);

return 1;}

int mainmenu()

{int c=1,x=15,y=75,i=1;

setbkcolor(0); setcolor (15); cleardevice();

outtextxy (x+5,80,"Рисовать сектор");

outtextxy (x+5,110,"Настройки");

outtextxy (x+5,140,"Работа с данными");

outtextxy (x+5,170,"Выход");

rectangle (x,y,x+135,y+15);

while (c!=13)

{setcolor (0);

rectangle (x,y,x+135,y+15);

if (c==80) {y+=30;i++;}   if (c==72) {y-=30;i--;}   if (i==0) {i=4;x=15;y=165;}

if (i==5) {i=1;x=15;y=75;}

setcolor (15);

rectangle (x,y,x+135,y+15);

c=getch();}

return i;

}

int color ()

{ int c=1,x=350,y=10,i=0;

setcolor (15);

outtextxy (x+5,15,"0-Черный"); outtextxy (x+5,45,"1-Синий");

outtextxy (x+5,75,"2-Зеленый"); outtextxy (x+5,105,"3-Голубой");

outtextxy (x+5,135,"4-Красный"); outtextxy (x+5,165,"5-Фиолетовый");

outtextxy (x+5,195,"6-Коричневый"); outtextxy (x+5,225,"7-Светлосерый");

outtextxy (x+5,255,"8-Темносерый"); outtextxy (x+5,285,"9-Светлосиний");

outtextxy (x+5,315,"10-Светлозеленый"); outtextxy (x+5,345,"11-Светлоголубой");

outtextxy (x+5,375,"12-Светлокрасный"); outtextxy (x+5,405,"13-Светлофиолетовый");

outtextxy (x+5,435,"14-Желтый"); outtextxy (x+5,465,"15-Белый");

rectangle (x,y,x+170,y+15);

while (c!=13&&c!=27)

{c=getch();

setcolor (0);   rectangle (x,y,x+170,y+15);

setfillstyle (1,0);   bar (x+175,y,x+190,y+15);

if (c==80) {y+=30;i++;}

if (c==72) {y-=30;i--;}

if (i==-1) {i=15;x=350;y=460;}

if (i==16) {i=0;x=350;y=10;}

setcolor (15);

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