Решения (задачи 230-239)
Задача 233.
// Часы с минутной и секундной стрелками #include <graphics.h> #include <stdio.h> #include <conio.h> #include <math.h> tinclude <dos..h> #define PATHTODRIVER "c: WborlandcWbgiW" // выводит вектор заданной длины из текущей точки // используется для вывода изображения стрелки void vector(int a, // угол между вектором и осью ОХ int 1) // длина вектора #define G 0.0174532 // коэф. перевода из градусов в радианы int x0,y0; 207 х0 = getx(); у0 = gety(); x1 = х0 + 1*cos(a*G); y1 = у0-1*sin(a*G); lineto(xl,yl); void clock () int x0 = 80, у0 = 80; int d = 50; int s = 0; int m = 0; int as = 90; int am = 90; // координаты центра часов // диаметр циферблата // время, кол-во секунд // время, кол-во минут // угол наклона секундной стрелки // угол наклона минутной стрелки circle(xO,yO,d+5); setfillstyle(SOLID_FILL, 0); do { // вывести секундную стрелку moveto(x0,y0); setcolor(YELLOW); vector(as,d); // вывести минутную стрелку moveto(x0,yO); setcolor(GREEN); vector(am,d-10); delay(1000); // задержка // стереть стрелки setcolor(0); // секундную moveto(x0,yO); vector(as,d); // минутную moveto(xO,yO); vector(am,d-10); (s > 60) s = 0; ¦ am -= 6; // шаг движения минутной стрелки 6 градусов if (am < 0) am = 354; } as -= 6; if (as < 0) as = 354; while (!kbhit ()); void main(void) int gdriver = DETECT; // драйвер int gmode; // режим int errorcode; // код ошибки initgraphf&gdriver, &gmode, PATHTODRIVER); errorcode = graphresult (); if (errorcode == grOk) { clock(); closegraph(); // выход из графического режима else printf("Ошибка: %d\n", errorcode); puts("Для завершения программы нажмите Enter"); getch();
Задача 234.
// График функции #include <graphics.h> linclude <stdio.h> #include <conio.h> #include <math.h> Idefine PATHTODRIVER "с: WborlandcWbgiW" // функции, график которых надо построить float fI(float x) { return(2 * sin(x) * exp(x/5)); void grafik() // границы изменения аргумента функции // границы изменения значения функции // аргумент функции // значение функции в точке х: // приращение аргумента // левый нижний угол области графика // ширина и высота области графика float x1=0, x2=25; float yl,y2; float x; float y; float dx=0.01 int 1-50, b-4 00; int w=300, h=200; float mx,my; // масштаб по осям Х и Y int x0,y0; // точка – начало координат char st[25]; // изображение числа // найдем максимальное и минимальное значение // функций на отрезке [x1,x2] y1 = fl(xl); // минимум у2 = fl(xl); // максимум х = x1 + dx; do { у = f 1 (к); if (у < y1) y1 = у; if (у > у2) у2 = у; х += dx; } while (x <= х2); // вычислим масштаб по осям my = h/fabs(y2-yl); тх – w/fabs(x2-xl); // оси = 1; у0 = b-abs(yl*my); line(x0,y0,x0+w,y0); // максимальное и минимальное значения функции sprintf(st,"%3.2f",y2); outtextxy(1+5,b-h,st); sprintf(st,"%3.2f",yl); outtextxy(1+5,b,st); // построение графика x = xl; do { у = fl(x); putpixel(x0+x*mx,y0-y*my,15); x += dx; } while (x <= x2); void main(void) { int gdriver = DETECT; // драйвер int gmode; // режим int errorcode; // код ошибки initgraph(&gdriver, Sgrnode, PATHTODRIVER); errorcode = graphresult(); if (errorcode == grOk) graf ik (); getchar(); closegraph(); } else { printf("Ошибка: %d\n", errorcode); puts("Для завершения программы нажмите Enter"); getch();