Иллюстрированный самоучитель по С++ для начинающих

Решения (задачи 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(); // выход из графического режима
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.