Turbo Pascal для начинающих




Задача 221


{ Светофор } uses Graph, Crt;
grDriver: Integer; grMode: Integer; ErrCode: Integer; res: integer;
i,j: integer; { счетчики циклов }
{ Рисует круг заданного цвета}
{ х,у,г - координаты центра и радиус круга }
( fc,bc - цвет круга и окантовки }
Procedure Krug(x,y,r: integer; fc,bc: integer);
begin
SetFillStyle(SolidFill,fc);
SetColor(fc);
PieSlice(x,y,0,360,r);
SetColor(be);
Circle(x,y,r); end;
{ Основная программа } begin
grDriver := detect;
InitGraph(grDriver, grMode,'e:\tp\bgi');
ErrCode := GraphResult;
if ErrCode = grOk then
begin
OutTextXYdO,10,'Соблюдайте правила уличного движения!'
Rectangle(88,88,112,152);
{ Горит красный свет }
KrugdOO, 100,10,Red,White) ;
Krug(100,120,10,LightGray,White);
Krug(100,140,10,LightGray,White);
Начальное положение стрелок: угол
между стрелкой и осью ОХ равен 90 град. as:=90; am: =90;
Circle(xO,yO,d+5); SetFillStyle{SolidFill,0); Str(m,stm); repeat
{ вывести секундную стрелку }
MoveTo(x0,y0);
SetColor(Yellow);
Vector(as,d);
( вывести минутную стрелку } MoveTo(x0,y0); SetColor(Green); Vector(am,d-10);
{ вывести "цифровые" часы }
Bar(10,10,50,20);
Str (s,sts) ;
OutTextXy(10,10,stm+':'+sts);
Delay(lOO); { задержка
{ стереть стрелки } SetColor(0); { секундную } MoveTo(x0,y0); Vector(as,d);
{ минутную } MoveTo(x0,y0) ; Vector(am,d-10);
s:=s+l;
if s = 60 then
begin
m:=m+l; Str (m, stm) ; s:=0;
Sound(1000); Delay(10); NoSound;
am:=am-6; { шаг движения минутной
стрелки б градусов } if am < 0 then am:=354; end;
as:=as-6;
if as < 0 then as:=354;
until KeyPressed; end;
CloseGraph; end.
( Построение графика функции } program groffunc; uses Graph;
var
xl,x2:real; yl,y2:real; x:real; y:real; dx:real; l,b:integer; w,h:integer; mx,my:real; xO,yO:integer; st:string;
{границы изменения аргумента функции }
{ границы изменения значения функции }
{ аргумент функции }
{ значение функции в точке х}
( приращение аргумента }
{ левый нижний угол области вывода графика }
{ ширина и высота области вывода графика }
{ масштаб по осям X и Y }
{ точка - начало координат }
( изображение числа }
grDriver: Integer; grMode: Integer; ErrCode: Integer;
Функция, график которой надо построить } Function f(x:real):reain
f:=2*Sin(x)*exp(x/5); end;
Function f2(x:real):real; begin
f2:=Ln(x); end;
begin
grDriver := VGA;
grMode:=VGAHi;
InitGraph(grDriver, grMode,'e:\tp\bgi');
ErrCode := GraphResult;
if ErrCode о grOk then Halt(l);
l:=40; b:=400; h:=200; w:=200;
xl:=0;
x2:=25;
dx:=0.01;
{ найдем максимальное и минимальное значения
функции на отрезке [xl,x2] } yl:=f(xl); { минимум } y2:=f(xl); ( максимум } x:=xl;
repeat y:=f (x); if y<yl then yl:=y; if y>y2 then y2:=y; x:=x+dx; until (x>=x2);
my:=h/abs(y2-yl); mx:=w/abs(x2-xl); { оси } xO:=l; yO:=b-Abs(Round(yl*my));
Line(l,b,l,b-h); Line(xO,yO,xO+w,yO); Str(y2:5:l,st); OutTextXY(l+5,b-h,st); Str(yl:5:l,st); OutTextXY(l+5,b,st);
{ построение графика }
x:=xl;
repeat
y:=f(x);
PutPixel(xO+Round(x*mx),yO-Round(y*my),15);
x:=x+dx; until (x>=x2); Readln; CloseGraph;
end.









Начало    Назад    Вперед




Книжный магазин