Практика программирования (Бейсик, Си, Паскаль)


         

округление вещественного числа до ближайшего


setcolor(color); moveto(x,у);
for(k=l; k<=a; k++)
{

xl=20*k;

yl=round(240-100*sin(twopi*(k+dfi)/t));
lineto(xl,yl); }

}

/*-------------------------------*/

long offset(int d,int m,int y)

{
/* Вычисляет количество дней от 1.01.1900 до d.m.y */ int k; long dd;

dd=365;
/* Количество дней в 1900 г */
/* Цикл учета полных лет */
for(k=1901; k<y; k++)
{

dd += 365;

if(k % 4 == 0) dd++;
/* Поправка на високосный год */
}

dd += d;

/* Учет дней в году у до месяца m */
for(k=0; k<m-l; k++)

dd += days[k];
/* Добавление дней, прошедших в месяце m */ return dd;

}

/*-----------------------------------*/

int round(double x)

{ /* округление вещественного числа до ближайшего целого */

if(x>=0) return (int)(x+0.5);
return (int)(x-0.5); }

Программа 8.18.pas

program bioritms; uses Graph,Dos; label wwod; const

twopi=2*Pi;

days:array [1..12] of byte = (30,28,31,30,31,30,31,31,30,31,30,31);
var

a, k, d,m, y,dl,ml,yl:word;

gd,gm:integer;

dd: longint;

procedure axis; var

j,stroke:integer; s:string[2];
begin

line(0,140,0,340);
line(0,240,a*20,240);
for j : =1 to a do begin

stroke:=5; str(j,s);
if j mod 5=0 then stroke:=10;
line(j *20,240+stroke,j*20,240-stroke);
if stroke=10 then outtextxy(j*20-5,240+20, s) ;
end;
end;

procedure grafik(t,dfi,color:integer) ;
var

x,y,x1,y1,k:integer;
begin

x:=0;

y:=round(240-100*sin(twopi*dfi/t));

setcolor(color); moveto(x,y) ;
for k:=l to a do begin

xl:=20*k;

yl:=round(240-100*sin(twopi*(k+dfi)/t));
lineto(xl,yl);
end;
end;

function offset(d,m,y:integer)rlongint;
{Вычисляет количество дней от 1.01.1900 до d.m.y}
var

k:integer;
dd:longint;
begin

dd:=365; {Количество дней в 1900 г} {Цикл учета полных лет}
for k:=1901 to y-1 do begin

dd:=dd+365;

{Поправка на високосный год}
if k mod 4=0 then inc(dd);
end;

{Учет дней в году у до месяца m}
for k:=l to m-1 do inc(dd,days[k]);
sdwig:=dd+d; {Добавление дней, прошедших в месяце m}
end;

Содержание  Назад  Вперед