Програма зчитування даних з файлу

Розробка програми на мові програмування Borland C++, яка зчитує з файлу координати відрізків і виводить на екран всі ті відрізки, довжина яких не перевищує половину суми найбільшого і найменшого відрізків які перетинаються. Інтерфейс та лістинг програми.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 14.03.2013
Размер файла 231,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Міністерство освіти України

Вінницький державний технічний університет

ІнІТКІ

Інститут КС

Курсова робота

з дисципліни

“Основи програмування та алгоритмічні мови”

Керівник: Черняк О.І.

Студент гр.: 1КС-01

Бойчук К.М.

Вінниця 2002

Зміст

  • Анотація
  • Завдання
  • Опис методу вирішення задачі
  • Блок-схема
  • Лістинг програми
  • Лістинг вхідного файла
  • Результати роботи
  • Висновки
  • Список використаної літератури

Анотація

В даній курсовій роботі розроблено програму на мові програмування Borland C++, яка зчитує з файлу координати відрізків і виводить на екран всі то відрізки, довжина яких не перевищує пів суми найбільшого і найменшого відрізків які перетинаються.

Завдання

У файлі задано координати кінців відрізків. Вивести на екран всі ті відрізки, довжина яких не перевищує пів суми найбільшого та найменшого відрізка, з яким він перетинається. Програма повинна мати заставку, з інформацією про розробника. В програмі потрібно зробити меню, для зручності користування використовувати мишку. А також можливість вводу даних з різних файлів.

Опис методу вирішення задачі

програмування екран інтерфейс лістинг

Для розв'язання поставленої задачі нам потрібно буде шукати точку перетину прямих, до яких належать відрізки і перевіряти чи ця точка належить відрізкам, якщо належить, то вони перетинаються.

Щоб знайти точку перетину прямих використаємо рівняння прямої через 2-ві точки:

Y0=Y2-Y1;

X0=X2-X1;

X*Y0-X1*Y0 = X0*Y-X0Y1

X*Y0- X0*Y = X1*Y0 -X0Y1

X1*Y0 -X0Y1=Z

X11*Y01 -X01Y11=W;

Це і буде наш розв'язок. Якщо ця система розв'язку немає, то прямі паралельні.

Щоб дізнатись чи точка належить відрізку, потрібно перевірити чи відповідні координати точки лежать в межах відповідних координат кінців відрізка.

Блок-схема

Лістинг програми

Lines.cpp

(основна програма)

#include <stdio.h>

#include "menys.h"

#include "zast.h"

#include <conio.h>

#include <stdlib.h>

#include <string.h>

#include <process.h>

/////////////////////////////////////////////////////////////////

void main(void)

{

grinit();

zast();

EditInitall();

init();

while (1)

{

getcurcorpos();

if (kbhit())

if (getch()==0)

if (getch()==45)exit(1);

};

}

Menys.h

(бібліотека меню)

#include <graphics.h>

#include <string.h>

#include "dialogs.h"

#include "line.h"

#include <stdlib.h>

//---

// =0 если клавиши поднятi

// =2 или на уровне панели

const Flat=0;

//----

const colorsel=1;

const colornotsel=7;

const ButtonColor=7;

const ButtonN=5;

const Meny1=4;

const Meny2=3;

const Meny3=0;

const Meny4=0;

const Meny5=0;

const Meny6=0;

int BoolMeny1=0;

int BoolMeny2=0;

int BoolMeny3=0;

int BoolMeny4=0;

int BoolMeny5=0;

int BoolMeny6=0;

int boolline=1, boolpoint=1,

colorbk=0;

void DoSome(int i);

void windows(int x,int y,int xx,int yy,int color,char s[100],int p);

class TMeny

{

public:

TMeny();

~TMeny(){};

void MenyDrow();

void setwidth(int x){width=x;};

void setheight(int x){height=x;};

void settop(int x){top=x;};

void setleft(int x){left=x;};

void setonoff(int x){

onoff=x;

if (!onoff) color=colornotsel;

else color=colorsel;

MenyDrow();};

void setcol(int x){color=x;};

void setcapt(char *x){caption=x;};

int getwidth()const {return width;};

int getheight()const {return height;};

int gettop()const {return top;};

int getleft()const {return left;};

int getonoff()const {return onoff;};

int getcol()const {return color;};

const char* getcapt(){return caption;};

void mousemove(int i);

void setpos(int x,int y, char* capt,int i=0);

private:

int width;

int height;

int top;

int left;

int onoff;

int color;

char *caption;

};

void TMeny::mousemove(int i)

{

if (mousein(left,top,left+width,top+height))

{

if (!getbutton(1))

{ //Не нажата

if (!onoff) setonoff(1);

}

else

{

if (onoff)

{

//Нажата

setonoff(0);

mouseoff();

putimage(xy1-2,yy1-2, arrow, 0);

mouseon();

free(arrow);

if (BoolMeny1) DoSome(i+20);

if (BoolMeny2) DoSome(i+30);

if (BoolMeny3) DoSome(i+40);

if (BoolMeny4) DoSome(i+50);

if (BoolMeny5) DoSome(i+60);

if (BoolMeny6) DoSome(i+70);

BoolMeny1=0;

BoolMeny2=0;

BoolMeny3=0;

BoolMeny4=0;

BoolMeny5=0;

BoolMeny6=0;

}

}

}

else

if (getbutton(1))

{

if (!mousein(xy1,yy1,xy2,yy2+yy1))

{

if (onoff) setonoff(0);

mouseoff();

putimage(xy1-2,yy1-2, arrow, 0);

mouseon();

free(arrow);

BoolMeny1=0;

BoolMeny2=0;

BoolMeny3=0;

BoolMeny4=0;

BoolMeny5=0;

BoolMeny6=0;

}

}

else if (onoff) setonoff(0);

}

void TMeny::setpos(int x,int y, char* capt,int i)

{

left=x;

top=y;

caption=capt;

if (i) MenyDrow();

}

void TMeny::MenyDrow()// Метод постройки кнопок------------

{

int i;

setfillstyle(1,color);

setlinestyle(0,0,0);

mouseoff();

bar(left,top,left+width,top+height);

if (!onoff) moveto(5+left,5+top);

else moveto(6+left,6+top);

setcolor(color+10);

outtext(caption);

mouseon();

} // Метод постройки кнопок--------------------------------

TMeny::TMeny()

{

caption='\0';

width=120;

height=18;

top=0;

left=0;

color=colornotsel;

onoff=0;

}

class TButton

{

public:

TButton(); //Конструктор

~TButton(){}; //деструктор

void ButDrow();

void setwidth(int x){width=x;};

void setheight(int x){height=x;};

void settop(int x){top=x;};

void setleft(int x){left=x;};

void setonoff(int x){onoff=x;ButDrow();};

void setcol(int x){color=x;};

void setcapt(char *x){caption=x;};

int getwidth()const {return width;};

int getheight()const {return height;};

int gettop()const {return top;};

int getleft()const {return left;};

int getonoff()const {return onoff;};

int getcol()const {return color;};

const char* getcapt(){return caption;};

void mousemove(int i);

void setpos(int x,int y, char* capt);

private:

int width;

int height;

int top;

int left;

int onoff;

int color;

char *caption;

};

//////////////////////////////////////////////////////////////////////////////

//ОБЪЯВЛЕНИЕ ОБЪЕКТОВ

///////////////////////////////////////////////////////////////////////////////////////////

TButton button[ButtonN];

TMeny FMeny1[Meny1],FMeny2[Meny2];

//////////////////////////////////////////////////////////////////////////////////////////

void message(int kl=1, char *s=NULL)//------------ИНФО про розробника------------------

{

size=imagesize(199,99,200+241,241);

arrow=malloc(size);

mouseoff();

getimage(199,99,200+241,241,arrow);

mouseon();

windows(200,100,240,140,7,"",0);

if (kl) windows(202,102,236,15,9,"Про програму",1);

else windows(202,102,236,15,14,"Помилка!!!",1);

setcolor(11);

mouseoff();

if (kl)

{

outtextxy(230,130," Курсова робота ");

outtextxy(230,150," Програму написав");

outtextxy(230,170," ст.гр.1KC-01");

outtextxy(230,190," БОЙЧУК К.М.");

}

else

{

outtextxy(230,150," Не найдено файл:");

outtextxy(230,170,s);

}

mouseon();

while ((getbutton(1)));

while ((!getbutton(1))&&(!kbhit()));

mouseoff();

putimage(199,99,arrow,0);

mouseon();

free(arrow);

while (kbhit()) getch();

}

int getmycolor(char *s="Виберiть колiр")

{

size=imagesize(199,99,200+241,241);

arrow=malloc(size);

mouseoff();

getimage(199,99,200+241,241,arrow);

mouseon();

windows(200,100,240,140,7,"",0);

windows(202,102,236,15,14,s,1);

setcolor(1);

int xx=240, yy=140;

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

for (int j=0; j<4; j++)

{

setfillstyle(1,i*4+j);

bar(i*40+xx,j*20+yy,i*40+xx+38,j*20+yy+18);

rectangle(i*40+xx,j*20+yy,i*40+xx+38,j*20+yy+18);

}

int rez=-1;

while (getbutton(1));

while ((!getbutton(1))&&(!kbhit()));

mouseoff();

if (getbutton(1))

{

int x,y;

getmousexy(&x,&y);

rez=getpixel(x,y);

}

putimage(199,99,arrow,0);

mouseon();

free(arrow);

while (kbhit()) getch();

return rez;

}

void DrowMenyAll(TMeny FirstMeny[],int FMeny)

{

xy1=FirstMeny[0].getleft()-4;

yy1=FirstMeny[0].gettop()-4;

xy2=FirstMeny[0].getleft()+FirstMeny[0].getwidth();

yy2=FirstMeny[FMeny-1].gettop()-FirstMeny[0].gettop()+FirstMeny[0].getheight()+8;

size = imagesize(xy1-2, yy1-2, xy2+4, yy1+yy2+2);

arrow = malloc(size);

mouseoff();

getimage(xy1-2, yy1-2, xy2+4, yy1+yy2+2, arrow);

mouseon();

windows(xy1,yy1,xy2-xy1+2,yy2,7,"",0);

for (int gg=0;gg<FMeny;gg++)

{

FirstMeny[gg].MenyDrow();

}

}

void TButton::mousemove(int i)

{

if (mousein(left,top,left+width,top+height))

{

if (getbutton(1))

{

if (onoff!=1) setonoff(1);

}

else

if (onoff==1)

{

setonoff(0);

DoSome(i);

}

else

{

if (onoff!=Flat) setonoff(Flat);

}

}else if (onoff!=0) setonoff(0);

}

void TButton::setpos(int x,int y, char* capt)

{

left=x;

top=y;

caption=capt;

ButDrow();

}

TButton::TButton()

{

caption='\0';

width=80;

height=18;

top=0;

left=0;

color=ButtonColor;

onoff=0;

}

void TButton::ButDrow()// Метод постройки кнопок------------

{

int i=onoff;

setfillstyle(1,color);

setlinestyle(0,0,0);

mouseoff();

bar(left,top,left+width,top+height);

switch (i)

{

case 0:setcolor(color);break;

case 1:setcolor(8);break;

case 2:setcolor(15);break;

}

if ((!Flat)&&(!i)) setcolor(15);

line(left-1,top-1,left-1,top+height+1);

line(left-1,top-1,left+width+1,top-1);

switch (i)

{

case 0:setcolor(color);break;

case 1:setcolor(15); break;

case 2:setcolor(8); break;

}

if ((!Flat)&&(!i)) setcolor(8);

line(left,top+height+1,left+width+1,top+height+1);

line(left+width+1,top,left+width+1,top+height+1);

switch (i)

{

case 0:moveto(5+left,5+top);break;

case 1:moveto(6+left,6+top);break;

case 2:moveto(4+left,4+top);break;

}

if ((!Flat)&&(!i)) moveto(5+left,5+top);

setcolor(color+10);

outtext(caption);

mouseon();

} // Метод постройки кнопок--------------------------------

void grinit()//---Инициал графики----------------------------

{

int gdriver = DETECT, gmode, errorcode;

initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk)

{

printf("Graphics error: %s\n", grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

}

mouseinit();

mouseon();

}//_void grinit()//-----------------------------------------------

void getcurcorpos()

{

int i;

if (BoolMeny1)

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

{

if (BoolMeny1)

FMeny1[i].mousemove(i);

}//===================================

if (BoolMeny2)

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

{

if (BoolMeny2)

FMeny2[i].mousemove(i);

}//====================================

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

{

button[i].mousemove(i);

}//=======================================

}

///////////////////////////////////////////////////////////////////

//----------------------------------------------------------------

//-----------------------------------------------------------------

void init()

{

setcolor(1);

mouseoff();

for(int j=0;j<200;j++)

circle(640,0,j*4);

mouseon();

//windows(1,2,637,478,1,"",0);

windows(1,1,637,27,7,"",0);

windows(1,450,637,27,7,"",0);

button[0].setwidth(16);

button[0].setheight(16);

button[0].setpos(620,5,"X");

button[1].setpos(5,5," Файл");

button[2].setpos(90,5,"Параметри");

button[3].setpos(175,5,"Малювати");

button[4].setpos(260,5,"Про прог.");

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

FMeny1[i].setwidth(150);

FMeny1[0].setpos(15,37, "Вiдкрити line.dat");

FMeny1[1].setpos(15,37+19, "Вiдкрити файл...");

FMeny1[2].setpos(15,37+38, "Випадково розташ.");

FMeny1[3].setpos(15,37+38+19,"Вихiд [Alt+X] ");

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

FMeny2[i].setwidth(215);

FMeny2[0].setpos(105,37, "Колiр фону");

FMeny2[1].setpos(105,37+19, "Малювати точки перетину");

FMeny2[2].setpos(105,37+38, "Малювати всi вiдрiзки");

if (!boolpoint)

FMeny2[1].setcapt("Малювати точки перетину");

else FMeny2[1].setcapt("He малювати точки перетину");

if (!boolline)

FMeny2[2].setcapt("Малювати всi вiдрiзки");

else

FMeny2[2].setcapt("He малювати всi вiдрiзки");

}

///////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////

void DoSome(int i)

{

switch (i)

{

case 0: closegraph();

exit(0);

break;

case 1:

DrowMenyAll(FMeny1,Meny1);

BoolMeny1=1;

break;

case 2:

DrowMenyAll(FMeny2,Meny2);

BoolMeny2=1;

break;

case 3: drowline(boolpoint,boolline);

init();;break;

case 4:message();break;

case 5:break;

case 6:break;

case 7:break;

case 8:break;

case 9:break;

///////////////////////

case 20:if (readfromfile("line.dat")) windows(1,450,637,27,7,"Вiдкрито файл:line.dat",0);

else

{

windows(1,450,637,27,7,"",0);

message(0,"line.dat");

};

break;

case 21:EditEnter(edit1,FEdit1);

if (exittru!=13) break;

char *sd;

sd="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";

strcpy(sd,edit1[0].gettext());

if (readfromfile(sd))

{

windows(1,450,637,27,7,"Вiдкрито файл:",0);

setcolor(1);

outtextxy(126,456,sd);

}

else

{

message(0,sd);

windows(1,450,637,27,7,"",0);

}break;//DLineleDrowAll(14);

case 22: randomize();

RndDLinele(random(20)+3);break;//droweperetun();

case 23:closegraph();exit(0);break;

case 24:;break;

case 25:;break;

case 26:;break;

case 27:;break;

////////////////////////

///////////////////////

case 30:int col=getmycolor("Колiр фону");

if (col>=0) setbkcolor(col);break;

case 31:boolpoint=!boolpoint;

if (!boolpoint)

FMeny2[1].setcapt("Малювати точки перетину");

else FMeny2[1].setcapt("He малювати точки перетину");

break;

case 32:boolline=!boolline;

if (!boolline)

FMeny2[2].setcapt("Малювати всi вiдрiзки");

else

FMeny2[2].setcapt("He малювати всi вiдрiзки");

break;

////////////////////////

}

}

Line.h

(бібліотека операцій з відрізками)

#include <math.h>

#include <stdlib.h>

#include <string.h>

#include <process.h>

/////////////////////////////////////////////////////////////////

const maxline=100;;

float distMAX=0;

int PointBool=1;

class TLine

{

public:

TLine();

~TLine(){};

int getx()const{return x;};

int gety()const{return y;};

int gety1()const{return y1;};

int getx1()const{return x1;};

float getdist()const{return dist;};

void setx(int xx){x=xx;};

void sety(int xx){y=xx;};

void setx1(int xx){x1=xx;};

void sety1(int xx){y1=xx;};

void distans(){dist=sqrt(pow((x-x1),2)+pow((y-y1),2));};

void setline(int xx,int yy,int xxx,int yyy)

{

x=xx; y=yy;

x1=xxx; y1=yyy;

distans();

};

void drow(int col);

private:

int x;

int y;

int x1;

int y1;

float dist;

};

///////----------------------------------------------\\\\\\\\\\\\\\\\

///////----------------------------------------------\\\\\\\\\\\\\\\\

TLine DLine[maxline];

int Count=0;

float maxdist=0;

///////----------------------------------------------\\\\\\\\\\\\\\\\

///////----------------------------------------------\\\\\\\\\\\\\\\\

TLine::TLine()

{

x=0;

y=0;

x1=0;

y1=0;

dist=0;

}

void TLine::drow(int col)

{

if (dist)

{

setcolor(col);

mouseoff();

line(x,y,x1,y1);

mouseon();

}

}

/////////////////////////////////////////////////

void getcoord(int &x,int &y,int &x1,int &y1,char s[])

{

int fl=0,n=0;

char sc[20];

for (int i=0; i<strlen(s);i++)

{

if ((s[i]>='0')&&(s[i]<='9'))

{

if (!fl)

{

fl=i;

n++;

}

sc[i-fl]=s[i];

}

else

if (fl)

{

sc[i-fl]='\0';

fl=0;

switch (n)

{

case 1:x=atoi(sc);break;

case 2:y=atoi(sc);break;

case 3:x1=atoi(sc);break;

case 4:y1=atoi(sc);break;

}

}

else fl=0;

}

}

int readfromfile(char *filename)

// --Ёв Ґв б д ©« Є®®а¤Ё­ вi Ё а ¤Ёгб, ў®§ў 1 Ґб«Ё ўбҐ ­®а¬ «м­®

// 0 Ґб«Ё ­Ґв д ©«

{

FILE *fil;

if ((fil = fopen(filename, "r")) == NULL)

{

return 0;

}

char s[70];

int x,y,x1,y1;

Count=0;

while (!feof(fil))

{

fgets(s,69,fil);

if (feof(fil))

{

s[strlen(s)+1]='\0';

s[strlen(s)]=' ';

}

getcoord(x,y,x1,y1,s);

DLine[Count].setline(x,y,x1,y1);

Count++;

}

fclose(fil);

return 1;

}// --Ёв Ґв б д ©« Є®®а¤Ё­ вi Ё а ¤Ёгб, ў®§ў 1 Ґб«Ё ўбҐ ­®а¬ «м­®

void DLineleDrowAll(int col)//аЁб ўбҐ

{

setcolor(col);

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

{

DLine[i].drow(col);

}

}

void DLineSort()// б®авЁа®ўЄ

{

int x,y,x1,y1;

for (int i=0;i<Count-1;i++)

for (int j=i+1; j<Count;j++)

if (DLine[i].getdist()<DLine[j].getdist())

{

x=DLine[i].getx();

x1=DLine[i].getx1();

y=DLine[i].gety();

y1=DLine[i].gety1();

DLine[i].setline(DLine[j].getx(),DLine[j].gety(),DLine[j].getx1(),DLine[j].gety1());

DLine[j].setline(x,y,x1,y1);

}

}

int getpoint(int x1,int y1,int x2,int y2,int x11,int y11,int x21,int y21, float &rezx, float &rezy)

{

long int x0=x2-x1;

long int y0=y2-y1;

long int x01=x21-x11;

long int y01=y21-y11;

if ((y0==0)&&(y01==0)) return 0;

if ((y0!=0)&&(y01!=0))

if ((x0*1.0/y0)==(x01*1.0/y01)) return 0;

if (((!x0)&&(!x01))||

((!y0)&&(!y01))||

((!x01)&&(!x0))||

((!y01)&&(!y0))) return 0;

float z=x1*y0-y1*x0;

float w=x11*y01-y11*x01;

if (!x0)

{

rezx=x1;

rezy=((rezx*y01-w)/x01*1.0);

}

else

if (!y0)

{

rezy=y1;

rezx=(w+rezy*x01)/y01*1.0;

}

else

if (!x01)

{

rezx=x11;

rezy=((rezx*y0-z)/x0*1.0);

}

else

if (!y01)

{

rezy=y11;

rezx=(z+rezy*x0)/y0*1.0;

}

else

{

if (!y0) return 0;

w=w-(y01*z/y0*1.0);

rezy=w/(-x01+(x0*y01)/y0*1.0);

rezx=(z+rezy*x0)/y0*1.0;

}

int t;

if (x1>x2)

{ t=x1;x1=x2;x2=t;}

if (y1>y2)

{ t=y1;y1=y2;y2=t;}

if (x11>x21)

{ t=x11;x11=x21;x21=t;}

if (y11>y21)

{ t=y11;y11=y21;y21=t;}

if (!((rezx+2>=x1)&&(rezx-2<=x2))) return 0;

if (!((rezx+2>=x11)&&(rezx-2<=x21))) return 0;

if (!((rezy+2>=y1)&&(rezy-2<=y2))) return 0;

if (!((rezy+2>=y11)&&(rezy-2<=y21))) return 0;

// printf("\n %f %f ",rezx,rezy);

return 1;

}

int ifperetun(int i,int j)

{

float x,y;

if (getpoint(

DLine[i].getx(),DLine[i].gety(),

DLine[i].getx1(),DLine[i].gety1(),

DLine[j].getx(),DLine[j].gety(),

DLine[j].getx1(),DLine[j].gety1(),x,y))

{

setcolor(11);

setfillstyle(1,5);

if (PointBool) fillellipse(x,y,2,2);

return 1;

}

return 0;

}

void droweperetun(int col=10)

{

for (int i=0;i<Count-1;i++)

for (int j=i+1;j<Count;j++)

if (ifperetun(i,j))

{

DLine[i].drow(col);

DLine[j].drow(col);

}

}

void RndDLinele(int n)//б«гз ©­® «Ё­ЁЁ

{

if (n>maxline) n=maxline;

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

{

DLine[i].setline(random(640),random(480),random(640),random(480));

}

Count=n;

}

void linemaxdrow(int col=11)

{

for (int i=0; i<Count-2; i++)

for (int j=(Count-1);j>(i+1);j--)

if (ifperetun(i,j))

{

distMAX=(DLine[i].getdist()+DLine[j].getdist())/2;

setlinestyle(0,0,3);

DLine[i].drow(11);

DLine[j].drow(11);

setlinestyle(0,0,0);

i=Count;

j=0;

}

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

if (DLine[i].getdist()<=distMAX)

DLine[i].drow(col);

}

int drowline(int boolp,int b1)

{

if (!Count) return 0;

PointBool=boolp;

mouseoff();

cleardevice();

mouseon();

DLineSort();

while (kbhit()) getch();

if (b1) DLineleDrowAll(7);

droweperetun(4);

linemaxdrow(14);

if (b1)

{

setfillstyle(1,7);

setcolor(7);

bar(25,400,45,418);

outtextxy(50,405,"K®«iа ўбix ўi¤аi§Єiў");

}

setfillstyle(1,4);

setcolor(4);

bar(25,420,45,438);

outtextxy(50,425,"K®«iа ўi¤аi§Єiў, й® ЇҐаҐвЁ­ овмбп");

setfillstyle(1,14);

setcolor(14);

bar(25,440,45,458);

outtextxy(50,446,"‚i¤а.,й® ­Ґ ЇҐаҐўЁйговм Їiў бг¬Ё ­ ©¬. i ­ ©Ў. ўi¤а., й® ЇҐаҐвЁ­.");

setfillstyle(1,11);

setcolor(11);

bar(25,460,45,478);

outtextxy(50,466,"H ©¬Ґ­иЁ© i ­ ©Ўi«миЁ© ўi¤аi§®Є, й® ЇҐаҐвЁ­ овмбп");

getch();

while (kbhit()) getch();

return 0;

}

Dialogs.h

(бібліотека вікон для вводу тексту)

#include "wind.h"

#include <stdlib.h>

const coloredit=7; // цвет самого поля для ввода

const colordialog=7; //цвет окна диалог

const FEdit1=1;

const FEdit2=0;

const FEdit3=0;

const FEdit4=0;

const FEdit5=0;

const FEdit6=0;

void *arrow;

int size,xy1,xy2,yy1,yy2;

int FEdit=0;

class TEdit

{

public:

TEdit();

~TEdit(){};

void EditDrow();

void setwidth(int x){width=x;};

void setheight(int x){height=x;};

void settop(int x){top=x;};

void setleft(int x){left=x;};

void setonoff(int x,int k=1){

onoff=x;

if (k) EditDrow();

};

void setcol(int x){color=x;};

void setcapt(char *x){caption=x;};

void settext(char x[20]){strcpy(text,x);};

int getwidth()const {return width;};

int getheight()const {return height;};

int gettop()const {return top;};

int getleft()const {return left;};

int getonoff()const {return onoff;};

int getcol()const {return color;};

const char* getcapt(){return caption;};

const char* gettext(){return text;};

void mousemove(int i);

void onkeypress(int i);

void setpos(int x,int y, char* capt,char* texts,int i=0);

private:

int width;

int height;

int top;

int left;

int onoff;

int color;

char *caption;

char text[20];

};

void TEdit::setpos(int x,int y, char* capt,char* texts,int i)

{

strcpy(text,texts);

left=x;

top=y;

caption=capt;

if (i) EditDrow();

}

TEdit::TEdit()

{

caption='\0';

text[0]='2';

text[1]='3';

text[2]='\0';

width=170;

height=18;

top=0;

left=0;

color=coloredit;

onoff=0;

}

void TEdit::EditDrow()

{

int i;

int x=left;

int y=top;

int xx=width;

int yy=height;

setfillstyle(1,color);

setlinestyle(0,0,0);

mouseoff();

bar(x,y,x+xx,y+yy);

setcolor(8);

line(x-1,y-1,x-1,y+yy+1);

line(x-1,y-1,x+xx+1,y-1);

setcolor(15);

line(x,y+yy+1,x+xx+1,y+yy+1);

line(x+xx+1,y,x+xx+1,y+yy+1);

moveto(6+x,6+y);

setcolor(color+10);

outtext(text);

line(x+strlen(text)*8+6,y+15,x+strlen(text)*8+10,y+15);

moveto(x,y-15);

setcolor(color+13);

outtext(caption);

if (onoff) setcolor(11);

else setcolor(colordialog);

rectangle(x-4,y-4,x+xx+4,y+yy+4);

mouseon();

}

//////////////////////////////////////////////////////////////////

// ОБЪЯВЛЕНИЕ ОБЪЕКТОВ

//////////////////////////////////////////////////////////////////

TEdit *TempEdit, edit1[FEdit1];

// char *strrez[FEdit];

int exittru=1;

void TEdit::mousemove(int i)

{

if (mousein(left,top,left+width,top+height))

{

if (!onoff)

if (getbutton(1))

{

int j;

for ( j=0;j<FEdit;j++)

if ((i!=j)&&(TempEdit[j].getonoff())) TempEdit[j].setonoff(0);

setonoff(1);

}

}

}

void TEdit::onkeypress(int i)

{

if ((onoff)&&(kbhit()))

{

char c=getch();

switch (c)

{

case 8: if (strlen(text))

{

text[strlen(text)-1]='\0';

EditDrow();

}break;

case 9: setonoff(0);

if (i==(FEdit-1)) TempEdit[0].setonoff(1);

else TempEdit[i+1].setonoff(1);break;

case 13:exittru=13;break;

case 27:exittru=27;break;

case 0:

switch (getch())

{

case 72:

setonoff(0);

if (i==0) TempEdit[FEdit-1].setonoff(1);

else TempEdit[i-1].setonoff(1);

break;//up

case 80:

setonoff(0);

if (i==(FEdit-1)) TempEdit[0].setonoff(1);

else TempEdit[i+1].setonoff(1);

break;//down

};break;

}

if (((c<0)||(c>=32))&&(strlen(text)<19))

{

int slen=strlen(text);

text[slen]=c;

text[slen+1]='\0';

EditDrow();

}

}

}

void EditInitall()

{

edit1[0].setpos(200,200,"Введiть iмя файла","");

}

void EditInit()

{

TempEdit[0].setonoff(1,0);

int i;

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

TempEdit[i].setonoff(0,0);

xy1=TempEdit[0].getleft()-10;

yy1=TempEdit[0].gettop()-45;

xy2=TempEdit[FEdit-1].getleft()+TempEdit[FEdit-1].getwidth()+10;

yy2=TempEdit[FEdit-1].gettop()+TempEdit[FEdit-1].getheight()-yy1+10;

size = imagesize(xy1-2, yy1-2, xy2+4, yy1+yy2+2);

arrow = malloc(size);

mouseoff();

getimage(xy1-2, yy1-2, xy2+4, yy1+yy2+2, arrow);

mouseon();

windows(xy1,yy1,xy2-xy1+2,yy2,7,"",0);

windows(xy1+2,yy1+2,xy2-xy1-2,18,9,"Введiть ....",1);

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

{

TempEdit[i].EditDrow();

}

}

void EditEnter(TEdit *edit1, int rrr)

{

int i;

FEdit=rrr;

TempEdit=edit1;

EditInit();

exittru=0;

while (!exittru)

{

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

{

TempEdit[i].onkeypress(i);

TempEdit[i].mousemove(i);

}

}

mouseoff();

putimage(xy1-2, yy1-2,arrow,0);

mouseon();

free(arrow);

}

/////////////////////// END DIALOG ////////////////////////////////

Zast.h

(бібліотека заставки)

#include <graphics.h>

#include <stdlib.h>

#include <dos.h>

#include <math.h>

#include <stdio.h>

#include <conio.h>

const deltime=600;

const Numb=15;

class TMyC

{

public:

TMyC();

~TMyC(){};

void drow(int i);

void GoOn();

private:

float x,y,rx,ry,dx1,dy1,dx2,dy2;

int c;

};

TMyC::TMyC()

{

x=random(600)+20;

y=random(400)+20;

rx=random(600)+20;

ry=random(400)+20;

dx1=random(6)*1.0/5;

dy1=random(6)*1.0/5;

dx2=random(6)*1.0/5;

dy2=random(6)*1.0/5;

c=random(14)+1;

}

void TMyC::drow(int i=0)

{

setcolor(i);

line(rx,ry,x,y);

}

void TMyC::GoOn()

{

drow();

x+=dx1;

if ((x>630)||(x<10)) dx1=-dx1;

y+=dy1;

if ((y>470)||(y<10)) dy1=-dy1;

if ((rx>630)||(rx<10)) dx2=-dx2;

rx+=dx2;

if ((ry>470)||(ry<10)) dy2=-dy2;

ry+=dy2;

drow(c);

};

TMyC cc[Numb];

void zast()

{

randomize();

int i;

mouseoff();

settextstyle(0,0,5);

while (!kbhit())

{

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

cc[i].GoOn();

setcolor(14);

if (!random(50)) outtextxy(50,50,"Љгаб®ў а®Ў®в ");

if (!random(50))outtextxy(50,150," ‚I„ђI‡Љ€");

if (!random(50))outtextxy(10,350," ЃЋ‰--“Љ Љ.M.");

if (!random(50))

{

settextstyle(0,0,3);

outtextxy(70,250,"‚ЁЄ®­ ў бв.Ја. 1KC-01");

settextstyle(0,0,5);

}

}

settextstyle(0,0,0);

while (kbhit()) getch();

mouseon();

}

Лістинг вхідного файлу

(файл line.dat)

Результати роботи

Вигляд заставки:

Вигляд меню програми:

Вигляд результатів графічних розрахунків:

Висновки

В процесі розв'язання поставленої задачі була проведена аналітична робота з приводу визначення математичної моделі та переведення її в алгоритм розв'язку. Згідно отриманого алгоритму була написана програма, яка успішно і коректно працює на будь-якому комп'ютері з монітором, який підтримує графічний режим. Таким чином, поставлена задача вирішена повністю.

Список використаної літератури

1. Юров Г.Н. Практикум по вычислительной математике. - М.: Высш. шк., 1990.

2. Таран В, Програмування мовою Паскаль .Київ. Наука, 1985 р.

3. Шилдт В.К., Зеленський К. Програмування на мові С, Київ, “Вищо школа”, 1986 р.

4. Керніган Рітчі. Розробка алгоритмів та програмування на мові Паскаль. - Х.: ВКП “Парітет” ЛТД, 1995.

5. Страуструп Б. Техника програмування. Київ. Наука, 1986 р.

6. Стенли Б. Липман Язик программирования С++ .

7. Керніган Б. Мова С., Москва „Фінанси і статистика”, 1992.

Размещено на Allbest.ru

...

Подобные документы

  • Зчитування числової інформації з файлу DATA.txt, аналізування, обробка та виконання графічного відображення. Редагування файлу тексту програми. Метод відображення кнопки з надписом на екрані. Створення нових класів на основі інших, вже створених.

    курсовая работа [196,2 K], добавлен 14.03.2013

  • Загальний алгоритм програми. Алгоритм проходження тесту. Алгоритм загрузки тесту в пам'ять програми. Програма "Тестер" на мові програмування TurboPascal в середовищі Borland Delphi 7. Інтерфейс програми "Тестер". Зовнішній вигляд вікна результату.

    контрольная работа [177,0 K], добавлен 26.02.2010

  • Розробка інтерфейсу програми "Автоматизована інформаційна система автошколи". Вибір архітектури, характеристика користувача. Генерація, проектування схеми бази даних, детальне програмування. Розробка структури таблиць. Лістинг програми, результат роботи.

    курсовая работа [2,7 M], добавлен 11.09.2015

  • Програми, які виводять на екран характеристики комп'ютера. Розробка програми "Монітор використання ресурсів комп’ютера" на мові програмування ASM-86. Алгоритм програми та її реалізація. Системні вимоги, інструкція для користувача, лістинг програми.

    курсовая работа [22,2 K], добавлен 08.08.2009

  • Створення програми "Items", яка містить відомості про кінські забіги, на мові Паскаль у компіляторі Delphi 7. Реалізація зчитування з текстового файлу і збереження даних у типізованому файлі. Використання лінійних списків, особливості використання стеку.

    курсовая работа [721,6 K], добавлен 24.06.2013

  • Редагування за допомогою текстового редактора NotePad вхідного файлу даних. Програмна реалізація основного алгоритму з використанням засобів об'єктно-орієнтованого програмування. Об’ява та опис класів і об'єктів. Розробка допоміжних програмних засобів.

    курсовая работа [69,4 K], добавлен 14.03.2013

  • Розробка програми на мові програмування С++ з використанням об’єктно-орієнтованого програмування, яка включає в себе роботу з файлами, класами, обробку числової інформації і роботу з графікою. Структура класів і об’єктів. Лістинг та алгоритм програми.

    курсовая работа [104,4 K], добавлен 14.03.2013

  • Складання блок-схеми і програми обчислення значення функції з заданою точністю та програми табулювання функції з заданим кроком. Обчислення двох значень поліному за допомогою схеми Горнера. Програма введення вхідних даних з клавіатури і з файлу ZAD4.DAT.

    контрольная работа [168,6 K], добавлен 29.09.2010

  • Мова Асемблера, її можливості та команди. Розробка алгоритму програми, його реалізація в програмі на мові Асемблера. Введення елементів матриці та обчислення cуми елементів, у яких молодший біт дорівнює нулю. Методи створення програми роботи з матрицями.

    контрольная работа [50,3 K], добавлен 12.08.2012

  • Програма на мові програмування С++. Аналіз стану технологій програмування та обґрунтування теми. Розробка програми виконання завдання, методу вирішення задачі. Робота з файлами, обробка числової інформації і робота з графікою. Розробка програми меню.

    курсовая работа [41,0 K], добавлен 17.02.2009

  • Актуальність розробки програми для відновлення помилково вилучених з диску комп'ютера файлів. Програма-аналог програми Dос Undelete на мові програмування ASM-86. Елементи каталогу, що стосуються відновлення стертих файлів. Алгоритм програми та її лістинг.

    курсовая работа [33,2 K], добавлен 08.08.2009

  • Вибір середовища програмування Borland Delphi 7.0 для створення електронно-медичного довідника. Формування бази даних для перегляду та пошуку медичних препаратів для лікування. Особливості програмування інтерфейсу програми, інструкція користувача.

    курсовая работа [2,2 M], добавлен 19.09.2012

  • Розробка програми на мові програмування Assembler, що виводить на екран чоловічка, який через певний час відтворює рухи. Використання кольорового графічного адаптера в текстовому режимі. Основні параметри, цикл заміни кадрів у анімації та їх створення.

    контрольная работа [124,1 K], добавлен 24.03.2012

  • Розробка програми на мові програмування С++ в середовищі Borland C++ Builder, яка надає можливість відкривати певну програму в певний час або через певний час. Проектування блок-схеми та інтерфейсу користувача. Підключення бібліотек, опис змінних.

    дипломная работа [90,0 K], добавлен 21.01.2013

  • BMP як формат зберігання растрових зображень, огляд структури файлу. Створення програми для запису та перегляду графічних BMP-файлів на мові програмування Turbo Pascal 7.0, розробка функціональної схеми і алгоритмів, особливості проведення тестування.

    курсовая работа [325,8 K], добавлен 12.06.2011

  • Особливості об'єктно-орієнтованого програмування. Розробка програми для елементарних математичних розрахунків, виведення результату на екран та запису у файлі. Сортування слів у рядку. Програма, яка реалізовує ходи шахових фігур. Програма-калькулятор.

    отчет по практике [2,0 M], добавлен 19.03.2015

  • Основні розрахунки резисторів мікросхеми. Розробка алгоритму рішення задачі методом блок-схем. Характеристика та розробка програми на мові С++ з використанням принципів модульного і структурного програмування. План тестування і налагоджування програми.

    курсовая работа [2,9 M], добавлен 05.12.2012

  • Розробка програми, яка б дозволяла протестувати знання з дисципліни "Програмування на мові С", виставити оцінку. Опис та обґрунтування методу організації вхідних та вихідних даних, вибору складу технічних та програмних засобів. Проведення лістингу.

    курсовая работа [11,0 K], добавлен 08.08.2009

  • Технічне обґрунтування та етапи розроблення програми на мові С для OS Windows, яка виводить у вікно запропонованої таблиці інформацію при натисненні клавіш клавіатури. Проблеми систем програмування. Резервування додаткової пам’яті в структурi класу вiкна.

    лабораторная работа [15,5 K], добавлен 04.04.2011

  • Написання програми для виведення чисел Фібоначчі. Загальна характеристика мови Паскаль. Науковий доробок Леонардо Фібоначчі. Історія і властивості послідовності. Особливості програмування мовою Turbo Pascal. Відкалібрування та синхронізування програми.

    курсовая работа [325,1 K], добавлен 09.10.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.