Решения (задачи 230-239)
Задача 231.
// Круговая диаграмма #include <graphi,cs .h> iinclude <stdio.h> #include <conio.h> finclude <math.h> Idefine PATHTODRIVER "c: WborlandcWbgiW" #define N 4 // количество категорий void krdiagr(char* *name, float* dol) int al,a2; // угол начала и конца сектора int color[4] = {BLUE, YELLOW, GREEN, RED}; int x,y; // координаты вывода легенды char st(25]; // изображение числа int i; // строим диаграмму al = 0; //от оси ОХ х = 350; у =100; // левый верхний угол области легенды for (i = 0; i < N; i++) // сектор a2 = al + 3.6 * dol[i]; // 1% -3.6 градуса if (i == N-l) a2 = 360; // последний, по счету, сектор setfillstyle(SOLID_FILL, color[i]); sector(200.200,al,a2.100.100); // pieslice(200.200,al,a2.100); al = a2; // следующий сектор – от конца текущего // легенда bar(х,у,х+30,у+10); rectangle(х,у,х+30,у+10); sprintf(st, "%s – %2.If%\0", name[i], outtextxy(x+50,у,st); у += 20; void main(void) { char *name[N] = {"Книги\0","Журналь\0", "КанцтоварьДО","Прочее\0"};' float kol[N]; // количество для категории float dol[N]; // доля категории в общем количестве float sum =0; // общее кол-во по всем категориям int i; int gdriver = DETECT; /./ драйвер int graode; // режим int errorcode; // код ошибки // ввод исходных данных puts("Введите количество по каждой категории") for (i = 0; i < N; i++) printf("%s – scanf("%f", S += kol[i]; // вычислим долю каждой категории в общей сумме for (i = 0; i < N; i++) = kol[i]/sum*100; // инициализация графического режима initgraphUgdriver, Sgmode, PATHTODRIVER); errorcode = graphresult(); if (errorcode == grOk) { krdiagr(name, dol);// строим диаграмму getch(); closegraph(); // выход из графического режима else printf("Ошибка: %d\n", errorcode); puts("Для завершения наймите Enter"); getch();
Задача 232.
// Светофор #include <graphics.h> #include <stdio.h> #include <conio.h> #include <dos.h> ttdefine PATHTODRIVER "c:\\borlandc\\bgi\\" // рисует круг заданного цвета void krug(int x,int у, int r, int fc, int be) ( // x, у, r – координаты центра и радиус // fc, be – цвет круга и окантовки setfillstyle(SOLID_FILL,fc); pies I ice (х, у, 0, 360, г) setcolor(be); circle(х,у,г); void main(void) { int gdriver = DETECT; // драйвер int gmode; // режим int errorcode; // код ошибки initgraph(Sgdriver, Sgrnode, PATHTODRIVER); errorcode = graphresult(); if (errorcode!= grOk) // ошибка инициализации // графического режима ' { printf("Ошибка: %d\n", errorcode); puts("Для завершения программы нажмите Enter") getch(); outtextxy(10.10,"Соблюдайте правила уличного движения!") rectangle (88.88.112.152); // Горит красный свет krug(100.100.10,RED,WHITE); krugdOO, 120, 10, LIGHTGRAY, WHITE); krugdOO, 140, 10, LIGHTGRAY, WHITE); for (int i = 1; i <= 3; // Здесь горит красный delay(3000); // задержка 3 сек krug(100.120.10,YELLOW,WHITE); // Включить желтый delay(1000); krug(100.100.10,LIGHTGRAY,WHITE); // Выключить красный krugd00, 120.10, LIGHTGRAY,WHITE); // Выключить желтый krugd00, 140.10,GREEN,WHITE); // Включить зеленый delay(2000); // Мигающий зеленый сигнал for (int j = 1; j <= 5; j++) // мигает 5 раз delay(500); krug(100.140.10,GREEN,WHITE); delay(500); krug(100.14 0.10,LIGHTGRAY,WHITE) krug(100.120.10,YELLOW,WHITE); delay(1500); krug{100.120.10,LIGHTGRAY,WHITE); krug(100.100.10,RED,WHITE); // Включить // зеленый // Выключить // зеленый // Включить // желтый // Выключить // желтый // Включить // красный outtextxy(10.25,"Нажмите Enter!"); getch(); closegraph(); // выход из графического режима