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


         

Задачи, советы и ответы - часть 6


а=уу\100

IF Y%+M%/100!+DT/10000>1582.1015# THEN

b=b+2-a+a\4 END IF

c=INT(365.25*yy)

IF yy<0 THEN

c=INT(365.25*yy-.75)

JD=c+INT(30.6001*(iran+1))+DT+1720994.5#+b

END FUNCTION

Программа 9_03.с

#include <stdio.h>

#include <conio.h>

#include <math.h>

double dif_time(int Yl,int Ml,double DTI,

int Y2,int M2,double DT2);

double JD(int У,int M,double DT);

main () {

int Y1,Y2,M1,M2;

double DT1,DT2;

clrscr();

printf("\n Задайте год григорианского календаря : ");

scanf("ld",&Yl);

printf("\n Задайте месяц григорианского календаря : ");

scanf("%d",&Ml);

printf("\nЗадайте день и время : ");

scanf("%lf",&DTD;

printf("\n Задайте год григорианского календаря : ");

scanf("%d",SY2);

printf("\n Задайте месяц григорианского календаря : ");

scanf("%d",&M2);

printf("\n Задайте день и время : "};

scanf("%lf",&DT2);

printf("\n Интервал = %lf",dif_time(Y1,M1,DTI,Y2,M2,DT2));

getch(); }

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

double dif_time(int Yl,int Ml,double DTI, int Y2,int M2, double DT2)

/* Определение интервала времени между */

/* двумя григорианскими датами */

/* Y1,Y2 - годы М1,М2 - месяцы */

/* целые части DTI, DT2 - дни */

/* дробные части DTI, DT2 - время дня */ /***************************************/

return fabs(JD(Yl,Ml,DTl)-JD(Y2,M2,DT2));

}

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

double JD(int Y,int M, double DT) {

int a,b=0,m,y;

long c;

y=Y;

m=M;

if (M<3) { y--; m += 12; }

a=y/100;

if(Y+M/100.+DT/10000 > 1582.1015)b += 2-a+(int)(a/4.);

c=365.25*y;

if(y<0) c=365.25*y-0.75;

return c+(long) (30.6001* (m+1))+DT+1720994.5+b; }

Программа 9_03.pas

program gd_to_jd;

{Определение интервала времени между двумя датами григорианского календаря : (Y1,M1,DT1) и (Y2,M2,DT2) }

uses Crt; var

Yl,Ml,Y2,М2:integer;




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