на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Програмування мовою С++ з використанням об’єктно-орієнтованого програмування
p align="center">(обов'язковий)

Текст програми

#include <stdio.h>

#include <conio.h>

#include <graphics.h>

#include <math.h>

class Point

{

int x, y;

public:

Point(){}

Point(int _x, int _y) { x=_x; y=_y; }

int getx(){ return x; }

int gety(){ return y; }

void draw(int color) { setcolor(color); circle(x, y, 3); }

};

long sd(Point p1, Point p2, Point p3)

{

return ((long)(p3.getx()-p1.getx())*(long)(p2.gety()-p1.gety())-(long)(p2.getx()-p1.getx())*(long)(p3.gety()-p1.gety()));

}

int Peretyn(Point p1, Point p2, Point p3, Point p4)

{

if (sd(p1, p2, p3)*sd(p1, p2, p4)<=0 && sd(p3, p4, p1)*sd(p3, p4, p2)<=0) return 1;

return 0;

}

class Polygon

{

Point p1, p2, p3, p4;

long s;

public:

Polygon(){ s = 0; }

Polygon(Point _p1, Point _p2, Point _p3, Point _p4)

{

p1=_p1; p2=_p2; p3=_p3; p4=_p4; s=0;

Point t;

if (Peretyn(p1, p2, p3, p4))

{

t=p2; p2=p3; p3=t;

}

else

if (Peretyn(p2, p3, p4, p1))

{

t=p1; p1=p2; p2=t;

}

}

void Calc()

{

s+=(long)(p1.getx()-p2.getx())*(long)(p1.gety()+p2.gety());

s+=(long)(p2.getx()-p3.getx())*(long)(p2.gety()+p3.gety());

s+=(long)(p3.getx()-p4.getx())*(long)(p3.gety()+p4.gety());

s+=(long)(p4.getx()-p1.getx())*(long)(p4.gety()+p1.gety());

s=labs(s)/2;

}

long gets() { return s; }

void sets(long _s) { s=_s; }

void draw(int color)

{

setcolor(color);

moveto(p4.getx(), p4.gety());

lineto(p1.getx(), p1.gety());

lineto(p2.getx(), p2.gety());

lineto(p3.getx(), p3.gety());

lineto(p4.getx(), p4.gety());

}

};

float Angle(Point p1, Point p2)

{

long dx = (p2.getx()-p1.getx());

long dy = (p2.gety()-p1.gety());

if (dx==0 && dy==0) return 0;

float res = float(dx*dx)/(float(dx*dx+dy*dy));

if (dx<0) res=-res;

return res;

}

int main()

{

clrscr();

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

int i, j, n;

char s[200];

fgets(s, 200, f);

for(n=0;!feof(f);++n) fgets(s, 200, f);

rewind(f);

Point* p=new Point[n];

fgets(s, 200, f);

for(i=0; i<n; i++)

{

int x, y;

fscanf(f, "%s%s%s%d%s%s%d%s", s, s, s, &x, s, s, &y, s);

p[i]=Point(x, y);

if (x<p[0].getx() || (x==p[0].getx() && y<p[0].gety()))

{

Point t=p[0]; p[0]=p[i]; p[i]=t;

}

}

Polygon test(Point(10, 0), Point(10, 1), Point(9, 1), Point(9, 2));

for(i=1; i<n; i++)

{

float An = Angle(p[0], p[i]);

int nom = i;

for(j=i+1; j<n; j++)

{

float an = Angle(p[0], p[j]);

if (an<An)

{

An = an; nom = j;

}

}

Point t = p[i]; p[i]=p[nom]; p[nom]=t;

}

int gd=DETECT, gm;

initgraph(&gd, &gm, "e:\\tc\\bgi");

if (graphresult()!=grOk)

{

printf("ERROR!\n");

return 1;

}

setcolor(GREEN);

for(i=0; i<n; i++)

p[i].draw(GREEN);

int i1, i2, i3, i4;

Polygon pmin, pmax; pmin.sets(1000000000);

for(i1=0; i1<n; i1++)

for(i2=i1+1; i2<n; i2++)

for(i3=i2+1; i3<n; i3++)

for(i4=i3+1; i4<n; i4++)

{

if (i1==40 && i2==43 && i3==47 && i4==49)

{

i2=i2;

}

Polygon pp = Polygon(p[i1], p[i2], p[i3], p[i4]);

pp.Calc();

if (pp.gets()>pmax.gets()) pmax=pp;

if (pp.gets()<pmin.gets())

pmin=pp;

}

pmin.draw(RED);

pmax.draw(YELLOW);

getch();

closegraph();

}

Додаток Б.

(обов'язковий)

Текст програми меню

#include<stdio.h>

#include<conio.h>

#include<iostream.h>

#include<graphics.h>

#include<string.h>

#include<process.h>

#include <stdlib.h>

#include <math.h>

#include <dir.h>

#include "clases.h"

#define LEFT 75

#define RIGHT 77

#define ENTER 13

char bc_path[255]="e:\\tc\\BIN\\tc.exe";

char bc_path1[255]="e:\\tc\\BIN\\";

int findfile(void);

void f_file(char *fname);

void generateNewInfile(void);

/**********************************************/

class MenuItem

{

int x1;

int y1;

int x2;

int y2;

char str[80];

public:

void setParam(int xx1,int yy1,int xx2,int yy2,char *sstr)

{

x1=xx1;

y1=yy1;

x2=xx2;

y2=yy2;

strcpy(str,sstr);

};

void showAct(void);

void showPas(void);

void About(void);

void Run(int);

};

void MenuItem::showPas(void)

{

setviewport(x1,y1,x2,y2,1);

setfillstyle(1,0);

bar(1,1,x2,15);

setfillstyle(1,8);

bar(1,1,x2-1,14);

setfillstyle(1,15);

bar(0,0,x2-2,13);

setfillstyle(1,7);

bar(1,1,x2-2,13);

setcolor(15);

outtextxy(6,4,str);

setcolor(0);

outtextxy(5,3,str);

};

void MenuItem::showAct(void)

{

setviewport(x1,y1,x2,y2,1);

setfillstyle(1,0);

bar(0,0,x2,15);

setfillstyle(1,9);

bar(2,3,x2,14);

setcolor(12);

outtextxy(7,5,str);

setcolor(10);

outtextxy(6,4,str);

};

void MenuItem::About(void)

{

char str[80];

window(10,5,70,15);

FILE*f1=fopen("About.dat","r");

for(int i=0;i<3;i++)

{

fgets(str,80,f1);

gotoxy(1,i+1);

printf("%s",str);

i++;

};

getch();

};

void MenuItem::Run(int activ)

{

switch (activ) {

case 0: About();

break;

case 1: f_file("input.txt");

break;

case 2: f_file("menu.cpp");

break;

case 3: int res = spawnl(P_WAIT,"circles.exe",NULL);

break;

case 4: closegraph();

exit(0);

break;

};

};

/***************************************************/

class Menu

{

MenuItem mits[5];

int nomAct;

int oldNomAct;

void onLeft(void);

void onRight(void);

void onEnter(void);

void show(void);

void show1(void);

public:

Menu(int xx,int yy);

void getMessage(int msg);

};

Menu::Menu(int xx,int yy)

{

int x,y;

x=xx;

y=yy;

char str[80];

FILE *f;

f=fopen("menudata.txt","r");

for(int i=0;i<5;i++)

{

fgets(str,80,f);

mits[i].setParam(x,y,x+strlen(str)*8+1,y+15,str);

x+=strlen(str)*8+3;

};

nomAct=0;

oldNomAct=1;

show();

};

void Menu::getMessage(int msg)

{

switch(msg)

{

case LEFT:

onLeft();

show1();

break;

case RIGHT:

onRight();

show1();

break;

case ENTER:

onEnter();

show1();

};

};

void Menu::onLeft(void)

{

oldNomAct=nomAct;

nomAct=(nomAct==0)?4:nomAct-1;

};

void Menu::onRight(void)

{

oldNomAct=nomAct;

nomAct=(nomAct==4)?0:nomAct+1;

};

void Menu::onEnter(void)

{

mits[nomAct].Run(nomAct);

};

void Menu::show(void)

{

int gdr=DETECT,gm;

initgraph(&gdr,&gm,"e:\\tc\\bgi");

setfillstyle(1,0);

bar(0,0,639,479);

for(int i=0;i<5;i++)

if(i==nomAct)

mits[i].showAct();

else

mits[i].showPas();

};

void Menu::show1(void)

{

for(int i=0;i<5;i++)

if(i==nomAct)

mits[i].showAct();

else

mits[i].showPas();

};

//**********************************************

main()

{

Menu mnu(40,40);

while(1)

mnu.getMessage(getch());

}

int findfile()

{

struct ffblk ffblk;

if(findfirst(bc_path,&ffblk,0)==0) return 1;

for(;;)

{

cleardevice();

gotoxy(1,1);

cout << "\nЌҐ¬®¦г §­ ©вЁ । Єв®а д ©«iў.";

cout << "\n‚ўҐ¤iвм и«пе в i¬'п д ©«г вЁЇг bc.exe";

cout << "\nЌ ЇаЁЄ« ¤ C:\\bc\\bin\\bc.exe Ў® exit ¤«п ўЁе®¤г.\n";

cin >> bc_path;

if(bc_path[0]=='e'&&bc_path[1]=='x')

{

cleardevice();

return 0;

}

if(findfirst(bc_path,&ffblk,0)==0)

{

cleardevice();

return 1;

}

else

{

cout << "\n” ©«\n"<<bc_path<<"\n­Ґ§­ ©¤Ґ­® Ў® ­ҐЄ®а­Єв­Ґ i'¬п д ©«г\n";

getch();

}

}

}

void f_file(char *fname)

{

if(findfile()==0) return;

char cmd[250];

strcpy(cmd, "notepad ");

strcat(cmd,bc_path1);

strcat(cmd,fname);

system(cmd);

}

Страницы: 1, 2, 3



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.