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

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