Порядок проектирования программы, демонстрирующей принцип заполнения очереди и стека и принцип удаления элементов из очереди и стека. Определение класса и всех необходимых функций. Программа на языке С, описание возможностей, используемых для алгоритма.
Аннотация к работе
Определение класса: class win { public: int dx, height, width, top, selected; char *text; void DrawWindow (int, int, int, int, int, char*); void HideWindow (int, int, int, int); void TextOut (char*, int, int, int, int); }; dx-координата по х левого края окна относительно начала координат. height - высота окна (кнопки). width - ширина окна (кнопки). top - координата по у верхнего края окна (кнопки) относительно начала координат. selected-параметр окна (кнопки), определяющий его закраску в зависимости от того активное оно или нет (1-активное, 0-неактивное). Определения всех перечисленных функций: void win: DrawWindow (int lx, int hght, int wdth, int t, int slct, char*str) {height=hght; width=wdth; top=t; selected=slct; text=str; setcolor(WHITE); setfillstyle (SOLID_FILL, selected? MAGENTA:BLUE); dx=lx; bar (dx, top, dx width, top height); TextOut (text, dx, height, width, top); int poly [12]; poly[0] = dx; poly[1] = top; poly[2] = dx width; poly[3] = top; poly[4] = dx width-3; poly[5] = top 3; poly[6] = dx 3; poly[7] = top 3; poly[8] = dx 3; poly[9] = top height-3; poly[10] = dx; poly[11] = top height; setfillstyle (SOLID_FILL, selected? CYAN:LIGHTBLUE); fillpoly (6, poly); poly[0] = dx; poly[1] = top height; poly[2] = dx width; poly[3] = top height; poly[4] = dx width; poly[5] = top; poly[6] = dx width-3; poly[7] = top 3; poly[8] = dx width-3; poly[9] = top height-3; poly[10] = dx 3; poly[11] = top height-3; setfillstyle (SOLID_FILL, BLACK); fillpoly (6, poly); } void win: HideWindow (int lx, int hght, int wdth, int t) {dx=lx; height=hght; width=wdth; top=t; setfillstyle (SOLID_FILL, BLUE); bar (dx, top, dx width, top height); } void win: TextOut (char *text, int dx, int height, int width, int top) { int w = textwidth(text); int h = textheight(text); int y = (height-h)/2; int x = (width-w)/2; outtextxy (dx x, top y, text); } В блоке Menu.cpp определены: struct coord {int x, lx, ly, rx, ry;} - структура содержащая параметры окна. x - координата по х левого края окна относительно начала координат. lx - высота окна (кнопки). ly - ширина окна (кнопки). rx - координата по у верхнего края окна (кнопки) относительно начала координат. ry - параметр окна (кнопки), определяющий его закраску в зависимости от того активное оно или нет (1-активное, 0-неактивное). void mnu_bild (win *mnu, coord *t, int reakt, int flag, char**name) - функция, в которую передаются параметры окна (кнопки), указатель на указатель на строку и указатель на созданный объект класса win, в свою очередь она активизирует или деактивизирует заданное окно. void mnu_bild (win *mnu, coord *t, int reakt, int flag, char**name) {if (flag==1) { t[reakt].ry=1; mnu[reakt].DrawWindow (t[reakt].x, t[reakt].lx, t[reakt].ly, t[reakt].rx, t[reakt].ry, name[reakt]); } else { if (reakt!=0) t[reakt].ry=0; mnu[reakt].DrawWindow (t[reakt].x, t[reakt].lx, t[reakt].ly, t[reakt].rx, t[reakt].ry, name[reakt]); } } void steck(void) - функция демонстрирующая работу со стеком. void steck(void) { win unit; win main_win[3]; char *str[]={{«1»}, {«2»}, {«3»}, {«4»}, {«5»}, {«6»}, {«7»}}; char *dialog[]={{«Добавление элементов в стек»}, {«Удаление элементов из стека»}, {«Нажмите любую клавишу»}}; coord mwin[]={{260,460,366,10,0}, {350,20,183,30,0}, {350,400,250,60,0}}; coord unit_c={310,20,20,60,1}; win temp=unit; mnu_bild (main_win, mwin, 0,0, name); mnu_bild (main_win 1, mwin 1,0,1, name 2); mnu_bild (main_win 2, mwin 2,0,0, name); main_win[2].TextOut (*dialog, main_win[2].dx, 40, main_win[2].width, main_win[2].top); Text (main_win 2, «Стек.txt»); mnu_bild (&unit,&unit_c, 0,1, str); getch(); coord tmp=unit_c; for (int j=6; j>=0; j-) { mnu_bild (&temp,&tmp, 0,1, str 6-j); for (int i=0; i=0; j-) { mnu_bild (&temp,&tmp, 0,1, str j); tmp.rx =20; for (int i=9 6-j; i>=0; i-) { moveUP(&temp); delay(50);} } temp.