МОиН РФ
по объектно-ориентированному программированию
Группа: ПМ-42
Студент: Шилов Д.А.
Преподаватель: Полетаева И.А.
г.Новосибирск, 2005 г.
1. Постановка задачи.
Разработать класс геометрической фигуры, определить функции, необходимые для реализации класса. Выделить интерфейс класса и поместить его в открытую часть описания. Включить в разработанный класс функции
– устанавливающие геометрические и графические характеристики фигуры;
– изменяющие положение фигуры;
– рисующие фигуру на экране;
– осуществляющие сохранение информации о фигуре в файле и считывание ее из файла. Разработать функцию, демонстрирующую поведение класса. Поместить реализацию класса в один файл, а демонстрационную функцию – в другой. Обеспечить необходимые межмодульные связи. Фигура: квадрат.
2. Алгоритм.
Изменение положения фигуры реализовано через Num клавиши 1,2,3,4,6,7,9 – пользователь вводит их с клавиатуры. Реализовано открытие двух потоков для чтения координат главной фигуры и их сохранения.
3. Текст программы.
/*Main.cpp
#include<graphics.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include"Kv.cpp"
cl_kvadrat kvadrat;
void main()
{
fp=fopen("C:\\dano.txt","r");
if (fp == NULL) {perror("oshibka pri otkritii faila"); printf("error!");}
fp2=fopen("C:\\rez.txt","w");
if (fp2 == NULL) {perror("oshibka priotkritii faila"); printf("error2!");}
clrscr(); /*ochistka ekrana*/
int gd, gm, error;
int ch=150;
detectgraph(&gd, &gm);
initgraph(&gd, &gm, "C:\\BorlandC\\BGI");
error=graphresult();
//-----------------proverka na oshibki-----------//
if(error!=grOk)
{
puts("oshibka grafiki");
puts(grapherrormsg(error));
exit(1);
}
//-----------------------------------------------//
maxx=getmaxx();
maxy=getmaxy();
printf("\nVnimanie! Koordinata x ne dolzhna prevyshat' znacheniya %d, a y %d\n",maxx,maxy);
printf("\nVvedite x-koordinatu levoy verhney vershiny kvadrata\n");
scanf("%d",&x1);
if (x1>maxx) {printf("\nKoordinata ne pomesh'aetsya na ekrane - vvedite men'she!\n"); getch(); exit(0);};
if (x1<0) {printf("\nKoordinata ne mozhet byt' otricatel'noy!\n"); getch(); exit(0);};
printf("\nVvedite y-koordinatu levoy verhney vershiny kvadrata\n");
scanf("%d",&y1);
if (y1>maxy) {printf("\nKoordinata ne pomesh'aetsya na ekrane - vvedite men'she!\n"); getch(); exit(0);};
if (y1<0) {printf("\nKoordinata ne mozhet byt' otricatel'noy!\n"); getch(); exit(0);};
printf("\nVvedite x-koordinatu pravoy nizhney vershiny kvadrata\n");
scanf("%d",&x2);
if (x2>maxx) {printf("\nKoordinata ne pomesh'aetsya na ekrane - vvedite men'she!\n"); getch(); exit(0);};
if (x2<0) {printf("\nKoordinata ne mozhet byt' otricatel'noy!\n"); getch(); exit(0);};
printf("\nVvedite y-koordinatu pravoy nizhney vershiny kvadrata\n");
scanf("%d",&y2);
if (y2>maxy) {printf("\nKoordinata ne pomesh'aetsya na ekrane - vvedite men'she!\n"); getch(); exit(0);};
if (y2<0) {printf("\nKoordinata ne mozhet byt' otricatel'noy!\n"); getch(); exit(0);};
cleardevice(); /*vsya grafika - po umolchaniyu*/
clearviewport(); /*ochistka graficheskogo okna*/
settextstyle(SMALL_FONT,HORIZ_DIR,4);
setfillstyle(SOLID_FILL,14);
while(ch!=0)
{
clrscr();
outtextxy(maxx-300,maxy-210,"1-Chtenie koordinat glavnoi figury iz faila");
outtextxy(maxx-300,maxy-200,"2-Zapis' koordinat glavnoi figury v fail");
outtextxy(maxx-300,maxy-190,"3-Graf i geom Nastroyki figury");
outtextxy(maxx-300,maxy-180,"4-Narisovat' nezakrashennuyu figuru");
outtextxy(maxx-300,maxy-170,"5-Zalivanie cvetom");
outtextxy(maxx-300,maxy-160,"6-Risovanie vlozhennoy figury");
outtextxy(maxx-300,maxy-150,"7-Proverka vvedennyh dannyh");
outtextxy(maxx-300,maxy-140,"8-Proverka vlozhennosti");
outtextxy(maxx-300,maxy-130,"9-Izmenit' polozhenie glavnoi figury");
outtextxy(maxx-300,maxy-120,"0-Vyhod");
outtextxy(maxx-300,maxy-100,"Vyberete punkt");
scanf("%d",&ch);
if (ch==1) kvadrat.read_file();
if (ch==2) kvadrat.save_file();
if (ch==3) kvadrat.settings();
if (ch==4) kvadrat.risov();
if (ch==5) kvadrat.zaliv();
if (ch==6) kvadrat.vlozh();
if (ch==7) kvadrat.prov_dannyh();
if (ch==8) kvadrat.prov_vlozh();
if (ch==9) kvadrat.izm_polozh();
if (ch!=0&&ch!=1&&ch!=2&&ch!=3&&ch!=4&&ch!=5&&ch!=6&&ch!=7&&ch!=8&&ch!=9) {printf("Nevernaya komanda!"); getch();};
};
fclose(fp);
fclose(fp2);
closegraph();
exit(0);
}
Kv.cpp
#include<graphics.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
int a1,b1,a2,b2,x1,x2,y1,y2,cvet,foncvet,shirina,sm_x,sm_y,maxx,maxy;
FILE*fp;
FILE*fp2;
//-------------------------------------------------------------------------------------//
//-------------------------------------------------------------------------------------//
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.