Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
met_cv.doc
Скачиваний:
12
Добавлен:
04.06.2015
Размер:
973.31 Кб
Скачать

Управления движением курсора.

#include<graphics.h>

#include<conio.h>

#include<bios.h>

#define LEFT 19200 /* коды клавиш стрелок */

#define RIGHT 19712

#define TOP 18432

#define BOTTOM 20480

#define ESC 283

// Прототип функции:

Void cursor(int dh,int iocur,int jocur,int incur,int jncur);

Void main()

{ int k;

int Width=640; // ширина экрана

int Height=480; // высота экрана

int N=25; // количество вертикальных и горизонтальных линий

int dh=Height/(N-1)-1; // размер клетки

int iocur,jocur,incur,jncur; // старые и новые координаты курсора

int bios=0;

int graphdriver=DETECT,graphmode;

Initgraph(&graphdriver,&graphmode," ");

setgraphmode(VGAHI);

setviewport(0,0,Width-1,Height-1,0);

setbkcolor(LIGHTBLUE);

setcolor(WHITE);

setlinestyle(SOLID_LINE,0,THICK_WIDTH);

// Разлиновка экрана:

for(k=0;k < N;k++)

{ line(0,dh*k,dh*(N-1),dh*k);

line(dh*k,0,dh*k,dh*(N-1));

}

iocur=jocur=incur=jncur=12;

cursor(dh,iocur,jocur,incur,jncur);

// Вывод инструкции на экран:

settextstyle(DEFAULT_FONT, HORIZ_DIR, 1);

setcolor(YELLOW);

outtextxy(dh*N,10, "Для управления");

outtextxy(dh*N,35, "курсором");

outtextxy(dh*N,60, "используйте");

outtextxy(dh*N,85, "клавиши-стрелки");

// Обработка нажатых клавиш:

while(bios != ESC)

if(kbhit() != 0)

{ bios=bioskey(0);

if(bios == LEFT && iocur > 1)

incur=iocur-1;

if(bios == RIGHT && iocur < N-1)

incur=iocur+1;

if(bios == TOP && jocur > 1)

jncur=jocur-1;

if(bios == BOTTOM && jocur < N-1)

jncur=jocur+1;

cursor(dh,iocur,jocur,incur,jncur);

iocur=incur;

jocur=jncur;

}

closegraph();

}

// Функция для перемещения курсора:

Void cursor(int dh, int iocur,int jocur,int incur,int jncur)

{

// Стирание курсора на старом месте:

setfillstyle(SOLID_FILL, LIGHTBLUE);

floodfill(dh*iocur-2,dh*jocur-2, WHITE);

// Рисование курсора на новом месте:

setfillstyle(SOLID_FILL, LIGHTRED);

floodfill(dh*incur-2,dh*jncur-2, WHITE);

}

Программа разлиновывает экран по горизонтали и вертикали и позволяет перемещать курсор по образовавшимся клеткам. Кроме графических функций использован материал раздела 11 по управлению программой с клавиатуры и материал раздела 12 по созданию пользовательских функций.

14. Упражнения для самостоятельной работы.

Расписать по тактам выполнение следующих фрагментов программ:

1.

int i,s1=0,s2=0;

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

{ s1+=i*i; s2+=i;}

s1/=s2;

2.

int i,im;

float x[7]={3,-1,7,8,9,3,-5};

float xm;

xm=x[0]; im=0;

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

if(x[i] > xm)

{ xm=x[i]; im=i;}

3.

#define N 6

int i;

int a[N]={-3,-2,-1,0,3,4};

for(i=0;i < N; i+=2)

if(a[i] >= 0)

a[i]=-3;

else

a[i]=3;

4.

int i=0, a=0, b=1;

while(i <= 5)

{ a+=2; b*=a; i+=2;}

5.

int i;

int a[7]={3,2,7,8,2,9,2};

for(i=6; i >= 0; i--)

if(a[i] == 2)

a[i]=5;

else

a[i]=0;

6.

int i,j;

int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};

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

for(j=2; j >= 0; j--)

a[i][j]=-a[j][i];

7.

int I=0,j;

while(i < 1)

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

i=j%5+1;

8.

int i,j;

int a[5]={4,1,3,1,4};

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

{ for(j=0; j < a[i]; j++)

printf("#");

printf("\n");

}

9.

int i=0,k;

int a[6]={7,5,3,4,2,8};

while(1)

{ k=a[i+1]%a[i];

i++;

if(k == 0)

goto END;

else

printf(" k=%d,",k);

}

END: printf("\nEND\n");

10.

int k=0,i=0;

int a[6]={2,4,5,0,7,8};

while(k == 0)

{ if(a[i] != 0)

a[i]=1/a[i];

else

k=1;

i++;

}

11.

#define N 6

int i;

char s1[N]="ифраиа";

char s2[N]=".ктмон";

static int s[2*N+1];

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

{ s[2*i]=s1[i];

s[2*i+1]=s2[N-i-1];

}

printf("%s\n",s);

12.

int i,j;

int a[3][3];

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

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

a[i][j]=i*i+j;

13.

int i,j;

int a[3][3];

for(i=2; i >= 0; i--)

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

a[j][i]=(i+1)*j;

14.

int i;

int a[5]={1,4,7,9,10};

int b[5]={3,4,7,10,10};

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

{ printf("%d=%d ",a[i],b[i]);

if(a[i]==b[i])

printf("- правильно\n");

else

printf("- не правильно\n");

}

15.

int i,j;

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

{ for(j=1;j < 5;j++)

printf("%d*%d=%d ",i,j,i*j);

printf("\n");

}

16.

int i;

char s1[16]="еинавошияяашгошп";

static char s2[17];

char c;

for(i=15;i >=0;i--)

{ c=s1[i];

if(c == 'ш')

c='р';

if(c == 'я')

c='м';

s2[15-i]=c;

}

printf("%s\n",s2);

17.

char c;

char ch[8]="тнедутс";

int i;

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

{ c=ch[6-i];

ch[6-i]=ch[i];

ch[i]=c;

}

printf("%s",ch);

18.

char ch[8]="меммия";

int i;

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

if(ch[i] == 'м')

ch[i]='c';

printf("%s",ch);

19.

char ch[3][4]={"пью","тер","ком"};

static char chn[10];

int i,j;

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

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

chn[3*i+j]=ch[(3*i*i-7*i+4)/2][j];

printf("%s\n",chn);

20.

int i, a0=12;

int a[6]={2,7,9,15,12,13};

for(i=0;i < 6 && a[i] != a0; i++);

Пример выполнения задания ( № 5):

1-ый шаг: i=6, 6 >= 0 - верно, a[6]=2 == 2 - верно, a[6]=5,

a={3,2,7,8,2,9,5}, i=6-1=5.

2-ой шаг: 5 >= 0 - верно, a[5]=9 == 2 - не верно, a[5]=0,

a={3,2,7,8,2,0,5}, i=5-1=4.

3-ий шаг: 4 >= 0 - верно, a[4]=2 == 2 - верно, a[4]=5,

a={3,2,7,8,5,0,5}, i=4-1=3.

4-ый шаг: 3 >= 0 - верно, a[3]=8 == 2 - не верно, a[3]=0,

a={3,2,7,0,5,0,5}, i=3-1=2.

5-ый шаг: 2 >= 0 - верно, a[2]=7 == 2 - не верно, a[2]=0,

a={3,2,0,0,5,0,5}, i=2-1=1.

6-ой шаг: 1 >= 0 - верно, a[1]=2 == 2 - верно, a[1]=5,

a={3,5,0,0,5,0,5}, i=1-1=0.

7-ой шаг: 0 >= 0 - верно, a[0]=3 == 2 - не верно, a[0]=0,

a={0,5,0,0,5,0,5}, i=0-1=-1.

8-ой шаг: -1 >= 0 - не верно, конец цикла.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]