DECLARE SUB MonthDay(Y%,OrdDay%,M%,D%)
RЕМ Восстановление даты по порядковому дню года
CLS
INPUT "Задайте год : ",Y%
INPUT "Задайте порядковый номер дня в году : ",OrdDay%
MonthDay Y%,OrdDay%,М%,D%
PRINT "Ему соответствует месяц = ",М%;" и день = ";D%
END
SUB MonthDay(Y%,OrdDay%,M%,D%)
' Восстановление месяца и дня в году Y%
' по порядковому номеру дня ord_day%
' М% - сюда засылается номер месяца
' D% - сюда засылается номер дня месяца
DIM A AS INTEGER, В AS INTEGER, С AS INTEGER, E AS INTEGER
A=1889
IF (Y% MOD 400=0)OR((Y% MOD 4=0)AND(Y% MOD l00<>0) ) THEN A=1523
B=INT((OrdDay%+A-122.1)/365.25)
C=OrdDay%+A-INT(365.25*B)
E=INT(C/30.6001)
IF E<13.5 THEN M%=E-1 ELSE M%=E-13'
D%=C-INT(30.6001*E)
END SUB
Программа 9_06.с
#include <stdio.h> ,
#include <conio.h>
#include <math.h>
void month_day(int Y,int ord_day,int *M,int *D);
main() {
int Y,M, D,ord_day;
clrscr();
printf("\n Задайте год : ");
scanf("%d",&Y);
printf("\n Задайте порядковый номер дня в году : ");
scanf("%d",&ord_day);
month_day(Y,ord_day,&M, &D);
printf("\nЕму соответствует месяц = %d и день = %d",M,D);
getch();
}
/*-------------------------------------*/
void month_day(int Y,int ord_day,int *M,int *D)
/*************************************/
/* Восстановление месяца и дня в году Y */
/* по порядковому номеру дня ord_day */
/* М - сюда засылается номер месяца */
/* D - сюда засылается номер дня месяца */
/****************************************/
{
int A=1889,B,C,E;
if((Y%400==0)||((Y%4==0)&&(Y%100!=0))) A=1523;
B=(ord_day+A-122.1)/365.25;
C=ord_da>y+A-floor (365. 25*B) ;
E=C/30.6001;
if(E<13.5) *M=E-1; else *M=E-13;
*D=C-floor(30.6001*E); }
Программа 9_06.pas
program ord_to_dat;
uses Crt;
var
Y,M,D,ord_day:integer;
procedure month_day(Y,ord_day:integer;var M,D:integer);