Решения (задачи 220-229)
Задача 224.
// Вычерчивает паровоз #include <graphics.h> #include <stdio.h> #include <conio.h> ' " #define PATHTODRIVER "c: WborlandcWbgiW" // вычерчивает паровоз void parovoz(int xO, int yO) #define dx 5 // шаг координатной сетки #define dy 5 // шаг координатной сетки int tr[30]; // координаты точек контура паровоза // корпус tr[0] = x0+0*dx; tr[l] = yO+7 *dy; tr[2] = x0+0*dx; tr[3] = yO+6 *dy; tr[4] = x0+1*dx; tr[5] = yO+6 *dy; tr[6] = x0+1*dx; tr[7] = yO+3 *dy; tr[8] = x0+2*dx; tr[9] = yO+3 *dy; tr[10] = x0+2*dx; trtii] = yO+0 *dy; tr[12] = x0+3Mx; tr[13] = yO+0 *dy; tr[14] = x0+3*dx; tr[15] = yO+3 *dy; tr[16] = x0+7*dx; tr[17] = yO+3*dy; tr[18] = x0+7*dx; tr[19] = yO+l*dy; tr[20] = x0+13*dx; tr[21] = yO+l*dy; tr[22] = x0+13*dx; tr[23] = yO+2*dy; tr[24] = x0+12*dx; tr[25] = yO+2*dy; tr[26] = x0+12*dx; tr[27] = yO+7*dy; tr[28] = x0+0*dx; tr[29] = yO+7*dy; ¦.. drawpoly(15,tr); // окно rectangle(xO+8*dx,y0+2*dy;x0+10*dx,y0+4*dy); // колеса setfillstyle(SOLID_FILL, RED); setcolor(RED); pieslice(x0+3*dx,y0+7*dy,0.360,l*dx); pieslice(x0+6*dx,y0+7*dy,0.360,l*dx); pieslice(x0+9*dx,y0+7*dy,0.360,l*dx); // окантовка колес setcolor(WHITE); circle(x0+3*dx,y0+7*dy, l*dx); circle(x0+6*dx,y0+7*dy,l*dx); circle(x0+9*dx,y0+7*dy, l*dx); void main(void) int gdriver = DETECT; // драйвер int gmode; // режим int errorcode; // код ошибки initgraph(&gdriver, sgmode, errorcode = graphresult(); PATHTODRIVER) if (errorcode == grOk) { parovoz(100.100); getch(); closegraph(); // выход из графического else { printf("Ошибка: %d\n", errorcode); s("Для завершения нажмите Enter") getch();
Задача 226.
// Оцифрованные координатные оси #include <graphics.h> #include <stdio.h> #include <conio.h> #define PATHTODRIVER "c:\\borlandc\\bgi\\" void grid() f int xO,yO; // координаты начала координатных осей int dx,dy; // шаг координатной сетки (в пикселах) int h,w; // высота и ширина области вывода // координатной сетки int x,y; float lx,1у; float dlx,dly; char st [8]; // метки линий сетки по X и Y // шаг меток линий сетки по X и Y // изображение метки линии сетки х0 = 50; у0 = 400; // оси начинаются в точке (50.400) dx = 40; dy = 40; // шаг координатной сетки 4 0 пикселов dlx = 0.5; // шаг меток оси X // метками будут: 0.5, 1.0, 1.5… dly =1; // шаг меток оси Y // метками будут: 1, 2, 3… h = 300; w = 400; lx = 0; ly =0; //в начало координат ставятся метки 0 line(x0,y0,x0,y0-h); // ось X line(x0,y0,x0+w,y0); // ось Y // засечки, сетка и оцифров х = х0; do { // засечка setlinestyle(SOLID_LINE, 0, 1); line(x,y0-3,x,y0+3); // оцифровка sprintf(st,"%2.1f",lx); outtextxy(х-8,yO+5,st); lx += dlx; // линия сетки setlinestyle (DOTTED__LINE, 0, 1); line(x,y0-3,x,y0-h); x += dx; } while (x < x0+w); // засечки, сетка и оцифровка по оси Y у = у0; do { // засечка setlinestyle(SOLID_LINE, 0, 1); line(x0-3,y,x0+3,y); // оцифровка sprintf(st,"%2.If",ly); outtextxy(x0-40,у, st); ly += dly; // линия сетки setlinestyle(DOTTED_LINE, 0, 1); line(xO+3,y,xO+w,y); setlinestyle(SOLID_LINE, 0, 1); {y – dy; } while (y > y0-h); void main(void) { int gdriver = DETECT; // драйвер int gmode; // режим int errorcode; // код ошибки initgraph(&gdriver, Sgrnode, PATHTODRIVER); errorcode = graphresult(); (errorcode!= grOk) // ошибка инициализации // графического режима { printf("Ошибка: %d\n", errorcode); puts("Для завершения программы нажмите Enter"); getch(); return; grid(); getch(); closegraph(); // выход из графического режима