Календарь
Posted: Thu Jan 16, 2014 9:55 pm
Несколько функций для расчётов Григорианского календаря.
Code: Select all
rem [b]Порядковый день в году[/b]
INPUT "Задайте год ":god$
INPUT "Задайте месяц ":mes$
INPUT "Задайте день ":day$
if god$ /400=floor(god$/400) OR (god$ /4=floor(god$/4) AND floor(god$/100)<>god$/100 ) THEN
Nom$=floor(275*mes$/9)-floor((mes$+9)/12)+day$-30
else
Nom$=floor(275*mes$/9)-2*floor((mes$+9)/12)+day$-30
endif
print day$;"." ;mes$;"." ;god$ ;" Порядковый номер дня в году: ";nom$
end
REM [b]Определение количества дней в месяце[/b]
Option base 1
INPUT "Задайте год ":g
INPUT "Задайте месяц ":M
if M=2 and g /400=floor(g /400) OR (g /4=floor(g/4) AND floor(g/100)<>g/100 ) THEN f=29 else f=28
DATA 31,f,31,30,31,30,31,31,30,31,30,31
DIM day$(12)
FOR J=1 TO 12 ! READ day$(J) ! NEXT J
PRINT "Число дней в этом месяце = ";day$(M)
end
REM Определение дня недели
INPUT "Задайте год":g
INPUT "Задайте месяц":m
INPUT "Задайте день":d
a=floor((14-m)/12)
y = g- a
m = m+ 12 * a -2
f1=(7000 + (d + y + floor(y / 4)-floor( y / 100) + floor(y / 400) + floor(31 * m / 12)))
f2=7 ! f=floor(f1/f2)
x=f1-f*f2
PRINT " день недели = ";x
End
REM [b]Восстановление даты по порядковому дню года[/b]
INPUT "Задайте год : ":god$
INPUT "Задайте порядковый номер дня в году : ":nom$
if god$ /400=floor(god$/400) OR (god$ /4=floor(god$/4) AND floor(god$/100)<>god$/100 ) THEN A=1523 else A=1889
B=floor((val(nom$)+A-122.1)/365.25)
C=(val(nom$)+A-floor(365.25*B))
E=floor(C/30.6001)
IF E<13.5 THEN m=E-1 ELSE m=E-13'
D=C-floor(30.6001*E)
PRINT "Ему соответствует месяц = ";m;" и день = ";d