Задачник и решебник (1087980), страница 18
Текст из файла (страница 18)
Решения# d e f i n e PATHTODRIVER " с : W b o r l a n d c W b g i W "v o i d main (void){int gdriver = DETECT; // драйверint gmode;// режимint errorcode;// код ошибкиinitgraph(&gdriver, &gmode, PATHTODRIVER);errorcode = graphresult();if (errorcode != grOk) // ошибка инициализации// граф. режима{printf("Ошибка: %d\n", errorcode);puts("Для завершения программы нажмите <Enter>");getch();exit(l);}ship(50,150);getch();closegraph0; // выход из графического режимаЗадача 209// Узор из окружностей// случайного радиуса и цвета#include <graphics.h>#include <stdlib.h>#include <stdio.h>#include <conio.h>tinclude "time.h"#include "dos.h"tdefine PATHTODRIVER "c: WborlandcWbgiW"// узор из окружностейvoid cuzor(int n){175176C/C-t"^ в задачах и примерах#define DELAYintK,y,r;,// задержка между выводом окружностей// координаты центра и радиус окружностиtime t t;srand((unsigned)time (&t)); // инициализация ГСЧfor (int i = 0; i < n; i++){X = randO % 640у = randO % 480r = randO % 240setcolor (randO %16)circle(x,y^ r)f#ifdef DELAYdelay(5);#endifvoid main (void){int gdriver = DETECT; // драйверint gmode;// режимint errorcode;// код ошибкиinitgraph(&^driver, &gmode, PATHTODRIVER);errorcode = graphresult();if (errorcode != grOk)// ошибка инициализации// графического режима{printf("Ошибка: %d\n", errorcode);puts("Для завершения программы нажмите <Enter>");getch();exit(l);cuzor(200); // узор из окружностейgetch();closegraph(); // выход из графического режимаЧасть 11.
Решения177Задача 211// Узор из линий// случайного цвета#include <graphics.h>#include <stdlib.h>#include <stdio.h>#include <conio.h>#include "time.h"#define PATHTODRIVER "c: WborlandcWbgiW"// узор из линийvoid luzor(int n){int x,y;// координаты конца линииint с;// цвет линииtime_t t;srand((unsigned)time(&t)); // инициализация ГСЧfor (int i = 0; i < n; i+4-){X = randO % 640;у = randO % 480;с = randO % 16;setcolor(c);lineto(x,y);}}void main (void){int gdriver = DETECT; // драйверint gmode;// режимint errorcode;// код ошибкиinitgraph(&gdriver, &gmode, PATHTODRIVER);errorcode = graphresult();if (errorcode J= grOk)// ошибка инициализации// графического режима178C/C-^-f- в задачах и примерах{printf("Ошибка: %d\n", errorcode);puts("Для завершения программы нажмите <Enter>");getch();exit(l);}luzor(200); // узор из окружностейgetch();closegraphО; // выход из графического режима}Задача 212// Контур пятиконечной звезды#include <graphics.h>tinclude <stdlib.h>#include <stdio.h>#include <conio.h>#define PATHTODRIVER "c: WborlandcWbgiW"// контур пятиконечной звезды#include "math.h"void starline(int xO, int yO, int r){// xO, yO - координаты центра звезды/ / г - радиус звездыint к,у;////int а; //////int rl; ////координаты конца лучаили впадиныугол между осью ОХ и прямой,соединяющей центр звезды иконец луча или точку впадинырадиус окружности расположенияточек впадин#define RTOR 2.5 // отношение радиуса лучей/ / к радиусу впадинЧасть II.
Решения179а = 18;// строим от правого гор. лучаг1 = r/RTOR;X = xO+r*cos(a*2*M_PI/360);у = yO-r*sin(a*2*M_PI/360);moveto(x,y);for (int i = 0; i < 5; i++){a = a+36;X = xO+rl*cos(a*2*M_PI/360);у = yO-rl*sin(a*2*M_PI/360);lineto(x,y); // от луча к впадинеа = а+36;if (а > 360) а = 18;X = xO+r*cos(a*2*M_PI/360);у = yO-r*sin(a*2*M_PI/360);lineto(x,y); // от впадины к лучу}}void main (void){int gdriver = DETECT; // драйверint gmode;// режимint errorcode;// код ошибкиinitgraph(&gdriver, &ginode, PATHTODRIVER);errorcode = graphresult();if (errorcode != grOk)// ошибка инициализации// графического режима{printf("Ошибка: %d\n", errorcode);puts("Для завершения программы нажмите <Enter>");getch();exit(l);}s t a r l i n e d O O , 100, 50);getch();closegraph0; // выход из графического режима180C/C-^-i- в задачах и примерахЗадача 213// Пятиконечная звезда#include <graphics.h>#include <stdio.h>#include <conio.h>#define PATHTODRIVER "c: WborlandcWbgiW"// пятиконечная звезда#include "math.h"void star(int xO, int yO, int r){// xO, yO - координаты центра звезды/ / г - радиус звездыint poly[20]; // координаты концов лучей/ / и впадинint а; // угол между осью ОХ и прямой,// соединяющей центр звезды и// конец луча или точку впадиныint rl; // радиус окружности расположения// точек впадин#define RTOR 2.5 // отношение радиуса лучей/ / к радиусу впадинint i;а = 18;// строим от правого гор.
лучаrl = r/RTOR;i=0;do {poly[i++] = xO+r*cos(a*2*M_PI/360);poly[i++] = yO-r*sin(a*2*M_PI/360);a = a+36;poly[i++] == xOH-rl*cos(a*2*M_PI/360) ;poly[i++] = yO~rl*sin(a*2*M_PI/360);a = a+36;if (a > 360) a = 18;} while(i < 20);setfillstyle(SOLID_FILL,RED);Часть II. РешенияW1^fillpoly(10,poly);}v o i d main (void){int gdriver = DETECT; // драйверint gmode;// режимint errorcode;// код ошибкиinitgraph(&gdriver, &gmode, PATHTODRIVER);errorcode = graphresult();if (errorcode != grOk)// ошибка инициализации// графического режима{printf("Оышбка: %d\n", errorcode);puts ("Для завершения программЕэ! нажмите <Enter>");getch();}else {star(100, 100, 20);getch();closegraph0; // выход из графического режима}}Задача 215// Российский флаг#include <graphics.h>#include <stdio.h>#include <conio.h>#define PATHTODRIVER "c: WborlandcWbgiW"void rusflag(int x, int y, int 1, int h){// X, у - координаты левого верхнего угла// 1, h - длина и высота флагаint W = h / 3;// рисуем флагsetfillstyle(SOLID_FILL,WHITE);182C/C-f-f- в задачах и примерахbar(х,у,х+1fy+w);setfillstyle(SOLID_FILL,BLUE);bar(x,y+w,x+l,y+2*w);setfillstyle{SOLID_FILL,RED);bar(x,y+2*w,x+l,y+3*w);outtextxy(x,y+h+5,"РоссияХО");}void main (void){int gdriver = DETECT; // драйверint gmode;// режимint errorcode;// код ошибкиinitgraph(&gdriver, &gmode, PATHTODRIVER);errorcode = graphresult();if (errorcode != grOk)// ошибка инициализации// графического режима{printf("Ошибка: %d\n", errorcode);puts("Для завершения программы нажмите <Enter>");getch();return;}rusflag(100,100,50,25);getch();closegraph(); // выход из графического режимаЗадача 216// Веселая рожица#include <graphics.h>#include <stdio.h>#include <conio.h>#define PATHTODRIVER "c: WborlandcWbgiW"// веселая рожицаЧасть II.
Решения183void face(int х, int у){setfillstyle(SOLID_FILL,YELLOW);setcolor(YELLOW);// чтобы на круге не было линииpieslice(х,у,О,360,20);setcolor(BLACK);агс(х,у+2Д80,ЗбО,10) ; // рот// глазаcircle(х-7,у-7,2);circle(х+7,у-7,2);}void main (void){int gdriver = DETECT; // драйверint gmode;// режимint errorcode;// код ошибкиinitgraph(&gdriver, &ginode, PATHTODRIVER);errorcode = graphresult();if (errorcode != grOk)// ошибка инициализации// графического режима{printf("Ошибка: %d\n", errorcode);puts("Для завершения программы нажмите <Enter>");getch();return;}face (100,100);getch();closegraphO; // выход из графического режимаЗадача 219// Узор из разноцветных концентрических окружностей#include <graphics.h>tinclude <stdio.h>#include <conio.h>184C/C'^-'^' в задачах и примерах# d e f i n e PATHTODRIVER " с : W b o r l a n d c W b g i W "v o i d main (void){int X = 100,у = 100;int г = 5;int dr = 5;int color;// координаты центра окружности// радиус наименьшей окружности// приращение радиуса окружности// цвет окружностиint gdriver = DETECT; // драйверint gmode;// режимint errorcode;// код ошибкиinitgraph(&gdriver, &gmode, PATHTODRIVER);errorcode = graphresult();if (errorcode == grOk){for (color = 1; color <= 15; color ++){setcolor(color);circle(x,y,r);r += dr;}getch();closegraph0; // выход из графического режима}else{printf("Ошибка: %d\n", errorcode);puts("Для завершения нажмите <Enter>");getch();}}Задача 220// Узор из окружностей#include <graphics.h>Часть II.
Решения185#include <stdio.h>#include <conio.h>#define PATHTODRIVER "c: WborlandcWbgiW"// узор из окружностейvoid uzor(){int X = 100,// координаты центра окружностиу = 100;int г = 20;// радиус окружностиint d = 30;// расстояние между центрами окружностейint i,j;// счетчики цикловfor (1 = 0; 1 < 4; i++){X = 100;for (j = 0; j < 5; j++){circle(x, y, r);X += d;}у += d;}}void main (void){int gdriver = DETECT; // драйверint gmode;// режимint errorcode;// код ошибкиinitgraph(&gdriver, &gmode, PATHTODRIVER);errorcode = graphresult();if (errorcode != grOk)// ошибка инициализации// графического режима{printf("Ошибка: %d\n", errorcode);puts("Для завершения программы нажмите <Enter>");getch();186С/С-*"*- в задачах и примерахreturn;}uzor();getch();closegraphО; // выход из графического режима}Задача 221// Узор из квадратов#include <graphics.h>#include <stdio.h>#include <conio.h>#define PATHTODRIVER "c: WborlandcWbgiW"// узор из квадратовvoid uzor(){int x;int у = 100;int n;// количество квадратов в рядуint d = 30;// размер квадратаint 1 = 10;// расстояние между квадратамиfor (int i = 0; i < 5; i++){// для ряда определим координату Xif (i % 2){ // нечетный рядп = 5;// пять квадратов в рядуX = 100;}else { // четный рядп = 4;X = 100 + d/2+1/2;}for (int j = 0; j < n; j++){rectangle(x,y,x+d,y+d);X += d+1;}Часть If.
Решения187^у += d/2+1/2;}}void main (void){int gdriver = DETECT; // драйверint gmode;// режимint errorcode;// код ошибкиinitgraph(&gdriver, Sgitiode, PATHTODRIVER) ;errorcode = graphresult();if (errorcode != grOk)// ошибка инициализации// графического режима{printf("Ошибка: %d\n", errorcode);puts("Для завершения програмс^ы нажмите <Enter>");getch();return;}uzor();getch();closegraph0; // выход из графического режимаЗадача 222// Шахматная доска#include <graphics.h>tinclude <stdio.h>#include <conio.h>#define PATHTODRIVER "c: WborlandcWbgiW"// шахматная доскаvoid doska(){int xO = 100,// координаты левого верхнего угла доскиуО = 100;188C/C++ в задачах и примерахint х,у;int W = 25;int i,j;// координаты левого верхнего угла клетки// размер клетки// номер строки и колонкиX = хО;у = уО;for (1 = 0; i < 8; i++)// восемь строк{for ( j = 0; j < 8; j++) // восемь клеток в строке{// если сумма номера строки и номера// колонки, на пересечении которых находится// клетка, четная, то клетка - коричневая,//иначе - желтаяif ((i+j) % 2)setfillstyle(SOLID_FILL,BROWN);else setfillstyle(SOLID_FILL,YELLOW);bar(x,y,x+w,y+w);X += w;}X = xO;у += w;}}void main (void){int gdriver = DETECT; // драйверint gmode;// режимint errorcode;// код ошибкиinitgraph(&gdriver, &gmode, PATHTODRIVER);errorcode = graphresult();if (errorcode != grOk)// ошибка инициализации// графического режима{printf("Ошибка: %d\n", errorcode);puts("Для завершения программы нажмите <Enter>");getch();Часть II.
Решенияreturn;doska О ;getch();closegraphО; // выход из графического режимаЗадача 223/ / Флажок#include <graphics.h>#include <stdio.h>#include <conio.h>#define PATHTODRIVER "c: WborlandcWbgiW"int flagO{int point[12]; // координаты точек флажка// задать координаты контура флажкаpoint[О] = 100; point[1] = 100;point[2] = 160; point[3] = 100;point[4] = 140; point[5] = 120;point[6] = 160; point[7] = 140;point[8] = 100; point[9] = 140;point[10]= 100; point[11] = 100;setfillstyle(SOLID__FILL, RED);fillpoly(6, point);line(100, 140, 100, 170);void main (void){int gdriver = DETECT; // драйверint gmode;// режР1мint errorcode;// код ошибкиinitgraph(&gdriver, &gmode, PATHTODRIVER);errorcode = graphresult();189190C/C'^^'^ в задачке и примерахif (errorcode != grOk)// ошибка инициализации// графического режима{ргintf("Ошибка: %d\n", errorcode);puts("Для завершения программы нажмите <Enter>");getch();return;}flag О ;getch();closegraph(); // выход из графического режимаЗадача 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]tr[2]tr[4]tr[6]tr[8]tr[10]tr[12]tr[14]========xO+0*dx •xO+0*dx,•xO+l*dxxO+l*dx,x0+2*dx,x0+2*dx,x0+3*dx,x0+3*dx,tr[l]tr[3]tr[5]tr[7]tr[9]tr[ll]tr[13]tr[15]========y0+7*dy;yO+6*dy;yO+6*dy;y0+3*dy;y0+3*dy;yO+0*dy;yO+0*dy;y0-f3*dy;191Часть II.