Курсовая: Вращение фигуры

Содержание
1 Руководство пользователя                                                     2
1.1 Описание задания                                                           2
1.2 Состав пакета прикладных программ                                          2
1.3 Системные требования                                                       2
1.4 Описание программы                                                         2
1.5 Диапазон допустимых значений                                               3
1.6 Таблица выходных данных                                                    3
2 Руководство системного программиста                                          3
2.1 Описание функций                                                           3
2.2 Листинг программы                                                          4
2.3 Блок схема                                                                30
1           Руководство пользователя
1.1           Описание задания
Заставить фигуру сделать оборот вокруг оси. С клавиатуры задаются следующие
параметры:
1.                  Длинна ребер;
2.                  Интенсивность мигания ребер;
3.                  Ось вращения (2 варианта значений);
Предусмотреть горячий выход по Esc, помощь и информацию об   авторе.
После ввода значений необходимо вычислить и вывести на экран:
1.                    Количество раз выполнения основного цикла программы;
2.                    Время выполнения программы;
3.                    Количество байт на HDD;
4.                    Количество байт в памяти;
5.                    Заданные значения ребер;
1.2           Состав пакета прикладных программ
В пакет прикладных программ входят: исполняемый файл met.exe, текст исходного
кода программы mov1990.cpp, а так же русификатор keyrus.com.
1.3           Системные требования
Для корректной работы программы необходимы следующие системные требования:
- Процессор 186+;
- ОЗУ 8МБ+
- Графический адаптер VGA (4 бита);
1.4           Описание программы
Для установки программы необходимо запустить файл setup.exe и далее следовать
инструкциям на экране.
После запуска файла mov1990.exe пользователю предоставляется графическое
меню. Пункты меню содержат информацию об авторе, помощь и запуск основного
алгоритма. Передвижение по пунктам меню осуществляется функциональными
клавишами-стрелками. При входе в подменю  Пуск пользователь должен ввести
значения ребер пирамиды частоту мерцания и ось вращения.
После выше указанных действий на экране появится пирамида вращающаяся вокруг
одной из осей рисунок 1.4.1 и рисунок 1.4.2.
Совершив поворот на 360 градусов, фигура останавливается. Далее на экран
выводятся величины вычисленные в ходе работы программы, описанные в задании.
     
Рисунок 1.4.1 Ц ось 1 Рисунок 1.4.2 Ц ось 2 1.5 Диапазон допустимых значений Ребра принимают значения в диапазоне от 50 до 225. Интенсивность мигания может принимать значения от 1 до 10. Номер оси принимает значения 1 и 2 , соответственно первая и вторая ось.
ОсьЦиклВремяRAMHDDИнтенсивностьДлинна ребер
1136015.7692339904954441100100100
2136015.2124739904954442200100100
3136015.6718239904954444100100200
4236015.3836139904954446150100150
5236015.782373990495444822550225
6236015.897613990495444911722090
7236015.09383399049544410225225225
1.6 Таблица выходных данных 2 Руководство системного программиста 2.1 Описание функций Данная программа содержит ряд нестандартных функций полный перечень которых следует далее (большинство этих функций не имеет параметров, если в функции используются параметры их назначение будет указано): 1) menu() Ц функция предназначена для вывода внешнего интерфейса программы. Данная функция является управляющей для всех остальных; 2) print() Ц функция для вывода файлов с результатами тестов; 3) input() Ц функция предназначена для ввода параметров вращения фигуры; 4) file_in () Ц функция предназначена для записи результатов в файл данных; 5) moving() Ц функция реализующая главный алгоритм программы Ц вращение фигуры; 6) size_on_hdd() Ц функция для определения размера исполняемого файла программы Ц mov1990.exe 7) about_mes() Ц функция для вывода информации о разработчике; 8) help_mes() Ц функция для вывода информации о пользовании программой; 9) init_gr() Ц функция для инициализации графического режима; 10) proverka() Ц функция для проверки легальности копии программы; 2.2 Листинг программы #include <graphics.h> //работа с графикой #include <stdlib.h> #include <stdio.h> //работа с файлом #include <conio.h> #include <math.h> #include <dos.h> //очистка и задержка экрана #include <iostream.h> //работа с файлом #include <time.h> #include <bios.h> #include <io.h> #include <fcntl.h> int x1,y1,x2,y2,x[8],y[8],xs[8],ys[8],xc,yc,p,col; double k,sd,dd1,dd2,tm1,tm2; long bios_time; FILE *fc; time_t t1,t2,ty1; struct time tx1,tx2; char ch=1; struct param { int a; int b; int c; int m; int o; double timer; long hdd; long unsigned ram; } ; void menu(); param data; void init_gr() { int gdriver = DETECT, gmode, errorcode; initgraph(&gdriver, &gmode, ""); errorcode = graphresult(); if (errorcode != grOk) { printf("Ошыбка открытия графического режима: %s\n", grapherrormsg(errorcode)); getch(); exit(1); } } void print() { fc=fopen("table.bin","rb"); clrscr(); fseek(fc,SEEK_SET,0); int pos=0; col=0; gotoxy(1,1); cout<<"#Опыта?"; gotoxy(8,1); cout<<"Длина?"; gotoxy(14,1); cout<<"Ширина?"; gotoxy(21,1); cout<<"Высота?"; gotoxy(28,1); cout<<"Ось?"; gotoxy(32,1); cout<<"Мерц.?"; gotoxy(40,1); cout<<"Время цикла ?"; gotoxy(56,1); cout<<"HDD ?"; gotoxy(63,1); cout<<"RAM "; gotoxy(1,2); cout<<"??????????????????????????????????????????????????????????????????????\n"; while(!feof(fc)) { col++; if (col>22){col=0; getch();} fread(&data,24,1,fc); if(feof(fc)) break; pos++; printf("%6.1d",pos); cout<<"? "; printf("%3.1d",(data).b); cout<<" "<<"? "; printf("%4.1d",(data).a); cout<<" "<<"? "; printf("%4.1d",(data).c); cout<<" "<<"? "; printf("%1.1d",(data).o); cout<<" "<<"? "; printf("%3.1d",(data).m); cout<<" "<<"? "; printf("%13.10f",(data).timer); cout<<" "<<"? "; printf("%5.1ld",(data).hdd); cout<<" "<<"? "; printf("%7.1ld",(data).ram); cout<<"\n"; } getch(); fclose(fc); } void input() { textcolor(15); textbackground(0); cleardevice(); cout<<"Введи длинну A [50 - 225]: \n"; cin>>(data).b; cout<<"Введи ширину B [50 - 225]: \n"; cin>>(data).a; cout<<"Введи высоту С [50 - 225]: \n"; cin>>(data).c; cout<<"Введи ось [1 - 2]: \n"; cin>>(data).o; cout<<"Введи период мерцания [1 - 10]: \n"; cin>>(data).m; (data).ram=(_SS/16+_SP-_psp)*16; if ( ((data).a>226) || ((data).b>226) || ((data).c>226)|| ((data).a<50) || ((data).b<50) || ((data).c<50) ||(((data).o<1)) ||(((data).o>2)) ||(((data).m>10)) || (((data).m<1))) { textcolor(12); setbkcolor(0); cleardevice(); gotoxy(1,1); cout<<"Параметры фигуры заданы не верно!"; cout<<"\nВведи их снова...\n"; getch(); input(); } } void proverka() { FILE *f3; double code,code1; f3= fopen("c:\\windows\\system\\dxwin.vxd","r+b"); asm {int 11h } code=_AX; if (f3==NULL) { textcolor(132); clrscr(); gotoxy(20,10); cout<<"В доступе отказано."; cout<<"\n Обратитесь к разработчику."; getch(); exit(1); } else { fread(&code1,8,1,f3); if (code1!=code) { textcolor(132); clrscr(); gotoxy(20,10); cout<<"В доступе отказано."; cout<<"\n Обратитесь к разработчику."; getch(); exit(1); } } } void file_in() { fc=fopen("table.bin","a+b"); if (fc==NULL) { cout<<"Ошыпка открытия файла"; getch(); exit(1); } fwrite(&data,24,1,fc); fclose(fc); } void moving() { ch=1; setlinestyle(0,0,3); double xx,yy; xx=0; yy=0; x1=320; y1=200; x[1]=x1-((data).a)/2; y[1]=y1; x[2]=x1+((data).a)/2; y[2]=y1; x[3]=x[1]; y[3]=y[1]+((data).b); x[4]=x[2]; y[4]=y[1]+((data).b); if ((data).o==1) { xx=x[3]; yy=y[3]; } if ((data).o==2) { xx=(x[1]+x[2])/2; yy=(y[1]+y[3])/2; } setcolor(10); for (int i=1;i<5;i++) { xs[i]=x[i]-xx; ys[i]=y[i]-yy; ; } t1=time(NULL); p=1; for (i=-30;i<331;i++) { if (kbhit()) {ch=1; ch=getch();} if (ch==27) break; t2=time(NULL); if (t2-t1==((data).m)) { t1=time(NULL); if (p==16) p=1; setcolor(p); p++; } k=i*3.14/180; for (int n=5;n>0;n--) { x[n]=(xs[n]*sin(k)-ys[n]*cos(k)); y[n]=(xs[n]*cos(k)+ys[n]*sin(k)); } int t,p,pk; double xd; t=320; p=300; pk=10; if ((data).o==1) { sd=0.1; xd=1; y[5]=y[1]-pk*(data).c; x[5]=x[1]; y[6]=y[2]-pk*(data).c; x[6]=x[2]; y[7]=y[3]-pk*(data).c; x[7]=x[3]; y[8]=y[4]-pk*(data).c; x[8]=x[4]; } if ((data).o==2) { sd=1; xd=0.1; t=400; p=240; y[5]=y[1]; x[5]=x[1]-pk*(data).b; y[6]=y[2]; x[6]=x[2]-pk*(data).b; y[7]=y[3]; x[7]=x[3]-pk*(data).b; y[8]=y[4]; x[8]=x[4]-pk*(data).b; } cleardevice(); line(xd*x[1]+t,sd*y[1]+p,xd*x[2]+t,sd*y[2]+p); line(xd*x[1]+t,sd*y[1]+p,xd*x[3]+t,sd*y[3]+p); line(xd*x[3]+t,sd*y[3]+p,xd*x[4]+t,sd*y[4]+p); line(xd*x[2]+t,sd*y[2]+p,xd*x[4]+t,sd*y[4]+p); line(xd*x[1]+t,sd*y[1]+p,xd*x[5]+t,sd*y[5]+p); line(xd*x[2]+t,sd*y[2]+p,xd*x[6]+t,sd*y[6]+p); line(xd*x[3]+t,sd*y[3]+p,xd*x[7]+t,sd*y[7]+p); line(xd*x[4]+t,sd*y[4]+p,xd*x[8]+t,sd*y[8]+p); line(xd*x[5]+t,sd*y[5]+p,xd*x[6]+t,sd*y[6]+p); line(xd*x[5]+t,sd*y[5]+p,xd*x[7]+t,sd*y[7]+p); line(xd*x[7]+t,sd*y[7]+p,xd*x[8]+t,sd*y[8]+p); line(xd*x[6]+t,sd*y[6]+p,xd*x[8]+t,sd*y[8]+p); delay(40); if (i<-29) { i++; getch(); bios_time = biostime(0, 0L); tm1=bios_time / CLK_TCK; } } bios_time = biostime(0, 0L); tm2=bios_time / CLK_TCK; (data).timer=tm2-tm1; if (ch!=27) ch=getch(); } void size_on_hdd() { long int hc; hc = open("mov1990.exe", O_RDONLY); (data).hdd = filelength(hc); close(hc); } void about_mes() { int key=0; while (key!=283) { setfillstyle(1,3); bar(100,155,550,330); setlinestyle(0,0,1); THICK_WIDTH; setcolor(11); rectangle(99,154,551,331); setcolor(0); outtextxy(285,160,"Об авторе..."); NORM_WIDTH; line(280,168,385,168); outtextxy(150,180," Данная программа создана Нетупским "); outtextxy(150,190," Олегом Игоревичем, студентом группы "); outtextxy(150,200," ВВТ-207. В программе выпо-"); outtextxy(150,210," лняется вращение параллелепипеда по"); outtextxy(150,220," варианту задания номер 8."); key=bioskey(0); } setfillstyle(1,1); bar(99,154,551,331); } void prog_mes() { int key=0; while (key!=283) { setfillstyle(1,3); bar(100,155,550,330); setlinestyle(0,0,1); THICK_WIDTH; setcolor(11); rectangle(99,154,551,331); setcolor(0); outtextxy(285,160,"О программе..."); NORM_WIDTH; line(280,168,385,168); outtextxy(150,180," В программе выполняется вращение"); outtextxy(150,190," параллелепипеда по варианту задания номер 8."); key=bioskey(0); } setfillstyle(1,1); bar(99,154,551,331); } void help_mes() { int key=0; while (key!=283) { setfillstyle(1,3); bar(100,155,550,430); setlinestyle(0,0,1); THICK_WIDTH; setcolor(11); rectangle(99,154,551,431); setcolor(0); outtextxy(285,160,"Помощь"); NORM_WIDTH; line(280,168,335,168); outtextxy(150,180," 1. Клавиши управления"); outtextxy(150,190," Меню программы упраляется при помощи клавиш "); outtextxy(150,200,"управления курсором (влево и вправо). Вход в "); outtextxy(150,210,"выделенное меню осуществляется клавишей Enter."); outtextxy(150,220," При вращении фигуры возможно досрочное за-"); outtextxy(150,230,"вершить этот процесс нажатием клавиши Esc"); outtextxy(150,250," 2. Меню прграммы"); outtextxy(150,260," В программе имеется 3 пункта меню. "); outtextxy(150,270," Выбор выделенного пункта меню осуществля-"); outtextxy(150,280," ется нажатием клавиши <Enter>. Перемеще-"); outtextxy(150,290," по главному меню осуществляется клавишами-"); outtextxy(150,300," стрелками(влево,вправо), по пунктам подменю"); outtextxy(150,310," стрелками вверх и вниз. Возврат к предыдущему"); outtextxy(150,320," меню выполняется нажатием <Esc>. Информация "); outtextxy(150,330," о выделенном пукте меню находитя в строке со-"); outtextxy(150,340," стояния."); outtextxy(150,360," 3. Ввод данных "); outtextxy(150,370,"После входа в меню Пуск, пользователю необходимо "); outtextxy(150,380,"ввести длину ребер фигуры, ось вращения и часто-"); outtextxy(150,390,"мерцания. Диапазон допустимых значений для ребер"); outtextxy(150,400,"составляет [50 - 225], для оси [1-2], для частоты "); outtextxy(150,410,"мерцания [1-10]. Если данные введены не верно, "); outtextxy(150,420,"то потребуется ввести их снова. "); key=bioskey(0); } setfillstyle(1,1); bar(99,154,551,431); } void status_bar() { setcolor(10); line(0,465,640,465); line(0,479,640,479); setfillstyle(1,5); bar(0,466,640,478); } void submenu1() { setfillstyle(1,4); bar(40,29,180,189); setcolor(12); rectangle(40,29,180,189); setfillstyle(1,12); bar(40,30,180,69); setcolor(10); outtextxy(60,44,"Пуск"); outtextxy(60,86,"Открыть"); outtextxy(60,126,"Сохранить"); outtextxy(60,168,"Очистить"); status_bar(); setcolor(11); outtextxy(30,468,"Выполнить вращение фигуры"); int key1=0,keys1=1; while (key1!=283) { key1=bioskey(0); switch (key1) { //Esc case 283:{ setfillstyle(1,1); bar(40,29,180,189); setcolor(9); line(40,29,180,29); line(40,30,180,30); setcolor(15); line(40,31,180,31); setcolor(11); status_bar(); outtextxy(30,468,"Для входа в меню Файл нажмите <Enter>"); break; } //стрелка вниз case 20480:{ if (keys1==4) keys1=1; else keys1++; switch (keys1) { case 1:{ setcolor(10); setfillstyle(1,4); bar(41,149,179,188); outtextxy(60,168,"Очистить"); setfillstyle(1,12); bar(40,30,180,69); outtextxy(60,44,"Пуск"); status_bar(); setcolor(11); outtextxy(30,468,"Выполнить вращение фигуры"); break; } case 2:{ setcolor(10); setfillstyle(1,4); bar(41,30,179,69); outtextxy(60,44,"Пуск"); setfillstyle(1,12); bar(40,70,180,109); outtextxy(60,86,"Открыть"); status_bar(); setcolor(11); outtextxy(30,468,"Вывести на экран файл с результатами тестов"); break; } case 3:{ setcolor(10); setfillstyle(1,4); bar(41,70,179,109); outtextxy(60,86,"Открыть"); setfillstyle(1,12); bar(40,110,180,149); outtextxy(60,126,"Сохранить"); status_bar(); setcolor(11); outtextxy(30,468,"Сохранить результаты последнего теста в файл"); break; } case 4:{ setcolor(10); setfillstyle(1,4); bar(41,110,179,149); outtextxy(60,126,"Сохранить"); setfillstyle(1,12); bar(40,150,180,189); outtextxy(60,168,"Очистить"); status_bar(); setcolor(11); outtextxy(30,468,"Удалить всю информацию из файла тестов"); break; } }//switch break; } //стрелка вверх case 18432: { if (keys1==1) keys1=4; else keys1--; switch (keys1) { case 1:{ setcolor(10); setfillstyle(1,4); bar(41,70,179,109); outtextxy(60,86,"Открыть"); setfillstyle(1,12); bar(40,30,180,69); outtextxy(60,44,"Пуск"); status_bar(); setcolor(11); outtextxy(30,468,"Выполнить вращение фигуры"); break; } case 2:{ setcolor(10); setfillstyle(1,4); bar(41,110,179,149); outtextxy(60,126,"Сохранить"); setfillstyle(1,12); bar(40,70,180,109); outtextxy(60,86,"Открыть"); status_bar(); setcolor(11); outtextxy(30,468,"Вывести на экран файл с результатами тестов"); break; } case 3:{ setcolor(10); setfillstyle(1,4); bar(41,149,179,188); outtextxy(60,168,"Очистить"); setfillstyle(1,12); bar(40,110,180,149); outtextxy(60,126,"Сохранить"); status_bar(); setcolor(11); outtextxy(30,468,"Сохранить результаты последнего теста в файл"); break; } case 4:{ setcolor(10); setfillstyle(1,4); bar(41,30,179,69); outtextxy(60,44,"Пуск"); setfillstyle(1,12); bar(40,150,180,189); outtextxy(60,168,"Очистить"); status_bar(); setcolor(11); outtextxy(30,468,"Удалить всю информацию из файла тестов"); break; } }//switch break; } //case:18432 //Enter case 7181:{ switch(keys1) { case 1:{ size_on_hdd(); setfillstyle(1,0); bar(1,1,640,480); input(); moving(); menu(); break; } case 2:{ closegraph(); print(); menu(); break; } case 3:{ file_in(); setfillstyle(1,5); bar(290,200,420,250); setcolor(10); rectangle(290,200,420,250); outtextxy(300,220,"Файл сохранен!"); getch(); setfillstyle(1,1); bar(290,200,420,250); break; } case 4:{ remove("table.bin"); setfillstyle(1,5); bar(290,200,400,250); setcolor(10); rectangle(290,200,400,250); outtextxy(300,220,"Файл очищен!"); getch(); setfillstyle(1,1); bar(290,200,400,250); break; } }//switch(keys1) break; }//case 7181: } }//while } void submenu2() { setfillstyle(1,4); bar(240,29,380,150); setcolor(12); rectangle(240,29,380,150); setfillstyle(1,12); bar(240,30,380,69); setcolor(10); outtextxy(260,44,"Об авторе"); outtextxy(260,86,"О программе"); outtextxy(260,126,"Инструкция"); status_bar(); setcolor(11); outtextxy(230,468,"Просмотреть информацию о создателе программы"); int key1=0,keys1=1; while (key1!=283) { key1=bioskey(0); switch (key1) { //Esc case 283:{ setfillstyle(1,1); bar(240,29,380,150); setcolor(9); line(240,29,380,29); line(240,30,380,30); setcolor(15); line(240,31,380,31); setcolor(11); status_bar(); outtextxy(30,468,"Для входа в меню Помощь нажмите <Enter>"); break; } //стрелка вниз case 20480:{ if (keys1==3) keys1=1; else keys1++; switch (keys1) { case 1:{ setcolor(10); setfillstyle(1,4); bar(241,110,379,149); outtextxy(260,126,"Инструкция"); setfillstyle(1,12); bar(240,30,380,69); outtextxy(260,44,"Об авторе"); status_bar(); setcolor(11); outtextxy(30,468,"Просмотреть информацию о создателе программы"); break; } case 2:{ setcolor(10); setfillstyle(1,4); bar(241,30,379,69); outtextxy(260,44,"Об авторе"); setfillstyle(1,12); bar(240,70,380,109); outtextxy(260,86,"О программе"); status_bar(); setcolor(11); outtextxy(30,468,"Информация о программе"); break; } case 3:{ setcolor(10); setfillstyle(1,4); bar(241,70,379,109); outtextxy(260,86,"О программе"); setfillstyle(1,12); bar(240,110,380,149); outtextxy(260,126,"Инструкция"); status_bar(); setcolor(11); outtextxy(30,468,"Помощь в пользовании программой"); break; } }//switch break; } //стрелка вверх case 18432: { if (keys1==1) keys1=3; else keys1--; switch (keys1) { case 1:{ setcolor(10); setfillstyle(1,4); bar(241,70,379,109); outtextxy(260,86,"О программе"); setfillstyle(1,12); bar(240,30,380,69); outtextxy(260,44,"Об авторе"); status_bar(); setcolor(11); outtextxy(30,468,"Просмотреть информацию о создателе программы"); break; } case 2:{ setcolor(10); setfillstyle(1,4); bar(241,110,379,149); outtextxy(260,126,"Инструкция"); setfillstyle(1,12); bar(240,70,380,109); outtextxy(260,86,"О программе"); status_bar(); setcolor(11); outtextxy(30,468,"Информация о программе"); break; } case 3:{ setcolor(10); setfillstyle(1,4); bar(241,30,379,69); outtextxy(260,44,"Об авторе"); setfillstyle(1,12); bar(240,110,380,149); outtextxy(260,126,"Инструкция"); status_bar(); setcolor(11); outtextxy(30,468,"Помощь в пользовании программой"); break; } }//switch break; } //case:18432 //Enter case 7181:{ switch(keys1) { case 1:{ about_mes(); //submenu2(); //menu(); break; } case 2:{ prog_mes(); //submenu2(); //menu(); break; } case 3:{ help_mes(); //submenu2(); //menu(); break; } }//switch(keys1) break; }//case 7181: } }//while } void menu() { init_gr(); setfillstyle(1,1); bar(1,1,640,480); setfillstyle(1,9); bar(5,5,635,30); setcolor(15); rectangle(3,3,636,31); setfillstyle(1,5); bar(68,6,124,28); int obv0=15; int obv=10; setcolor(obv); //setlinestyle(2,0,2); rectangle(68,6,124,28); settextstyle(0,0,1); setcolor(11); outtextxy(80,14,"Файл"); outtextxy(280,14,"Помощь"); outtextxy(500,14,"Выход"); setcolor(11); status_bar(); outtextxy(30,468,"Для входа в меню Файл нажмите <Enter>"); int key=0,keys=1; while (key!=283) { key=bioskey(0); switch (key) { //вправо case 19712:{ if (keys==3) keys=1; else keys++; switch (keys) { case 1:{ setfillstyle(1,9); bar(485,6,555,28); outtextxy(500,14,"Выход"); setfillstyle(1,5); bar(68,6,124,28); setcolor(obv); rectangle(68,6,124,28); settextstyle(0,0,1); setcolor(11); outtextxy(80,14,"Файл"); setcolor(11); status_bar(); outtextxy(30,468,"Для входа в меню Файл нажмите <Enter>"); break; } case 2:{ setfillstyle(1,9); bar(68,6,124,28); outtextxy(80,14,"Файл"); setfillstyle(1,5); bar(265,6,340,28); setcolor(obv); rectangle(265,6,340,28); settextstyle(0,0,1); setcolor(11); outtextxy(280,14,"Помощь"); setcolor(11); status_bar(); outtextxy(30,468,"Для входа в меню Помощь нажмите <Enter>"); break; } case 3:{ setfillstyle(1,9); bar(265,6,340,28); outtextxy(280,14,"Помощь"); setfillstyle(1,5); bar(485,6,555,26); setcolor(obv); rectangle(485,6,555,26); settextstyle(0,0,1); setcolor(11); outtextxy(500,14,"Выход"); setcolor(11); status_bar(); outtextxy(30,468,"Для выхода из программы нажмите <Enter>"); break; } } break;} case 19200: { if (keys==1) keys=3; else keys--; switch (keys) { case 1:{ setfillstyle(1,9); bar(265,6,340,28); outtextxy(280,14,"Помощь"); setfillstyle(1,5); bar(68,6,124,28); setcolor(obv); rectangle(68,6,124,28); settextstyle(0,0,1); setcolor(11); outtextxy(80,14,"Файл"); setcolor(11); status_bar(); outtextxy(30,468,"Для входа в меню Файл нажмите <Enter>"); break; } case 2:{ setfillstyle(1,9); bar(485,6,555,28); outtextxy(500,14,"Выход"); setfillstyle(1,5); bar(265,6,340,28); setcolor(obv); rectangle(265,6,340,28); settextstyle(0,0,1); setcolor(11); outtextxy(280,14,"Помощь"); setcolor(11); status_bar(); outtextxy(30,468,"Для входа в меню Помощь нажмите <Enter>"); break; } case 3:{ setfillstyle(1,9); bar(68,6,124,28); outtextxy(80,14,"Файл"); setfillstyle(1,5); bar(485,6,555,26); setcolor(obv); rectangle(485,6,555,26); settextstyle(0,0,1); setcolor(11); outtextxy(500,14,"Выход"); setcolor(11); status_bar(); outtextxy(30,468,"Для выхода из программы нажмите <Enter>"); break; } } //case break;}//case 19200 case 15104:{ if (key==15104) help_mes(); break; } case 15360:{ if (key==15360) { file_in(); setfillstyle(1,5); bar(290,200,420,250); setcolor(10); rectangle(290,200,420,250); outtextxy(300,220,"Файл сохранен!"); getch(); setfillstyle(1,1); bar(290,200,420,250); } break; } case 15616:{ if (key==15616) {closegraph(); print(); menu();} } case 16896:{ if (key==16896) { remove("table.bin"); setfillstyle(1,5); bar(290,200,400,250); setcolor(10); rectangle(290,200,400,250); outtextxy(300,220,"Файл очищен!"); getch(); setfillstyle(1,1); bar(290,200,400,250); } break; } case 17408:{ if (key==17408) { size_on_hdd(); setfillstyle(1,0); bar(1,1,640,480); input(); moving(); menu(); } } case 7181:{ if (keys==1){ submenu1(); } if (keys==2){ submenu2(); } if (keys==3) { exit(1); } break; } //case 7181 break; } } } void main() { proverka(); system("keyrus.com"); window(1,1,80,25); textbackground(0); clrscr(); menu(); } 2.3 Блок-схема