Здесь приведена программа расчёта времени восхода и захода солнца в зависимости от географических координат по московскому времени.Погрешность может составлять одну-две минуты для момента восхода или захода от приведённых в календаре для Москвы. Впрочем и в календарях за разные годы могут быть отличия на минуту.Но в целом моменты восхода и захода так мало отличаются от года к году,кроме високосных лет,что не имеют смысла вопросы когда восход и заход в такую-то дату в таком-то году.Если вас не волнуют отличия в 1 минуту,то эти моменты не изменяются для конкретной даты от года к году(если не иметь ввиду переход на летнее время-сдвиг на час вперёд).Если продолжительность дня,полученная данной программой,отрицательна или 1 минута,то на данной широте полярная ночь,а если время восхода и захода не выдаётся, то полярный день.Тогда надо выходить ctrl-break.Перевод с московского на местное время условный – 1час соответствует 15 градусов долготы,что для часовых поясов далеко не всегда соблюдается.

Для високосных годов погрешность больше.

Пример для Чикаго(ещё по летнему времени).

          

               

 

 

 Если вы хотите связаться on-line с одноклассником живущим сейчас в Чикаго(41.9 гр. с.ш.,87.65 гр. з.д.),то вы можете ориентируясь на результат работы программы выбрать время для звонка.Конечно корректно вычесть 2 часа из полученных значений для местного времени ,учитывая наше летнее и декретное время.Впрочем информация о различии времени с Москвой любых больших городов в мире есть в интернете.

Так как в QB нет встроенных функций arcsin и arccos они вычисляются методом подекадного приближения и через arctg.

' Программа рассчитывает время восхода и захода солнца в зависимости от

'географических координат по московскому времени. 

1 CLS

INPUT "  Широта:(МОСКВА-55.75;Петербург-60):", F

INPUT "  Долгота: (МОСКВА-37.62;Петербург-30.5):",LM

2 INPUT"  МЕСЯЦ:", M

MN = M

INPUT "   ЧИСЛО:", CH

IF M = 1 THEN N0 = 0

IF M = 2 THEN N0 = 31

IF M = 3 THEN N0 = 59

IF M = 4 THEN N0 = 90

IF M = 5 THEN N0 = 120

IF M = 6 THEN N0 = 151

IF M = 7 THEN N0 = 181

IF M = 8 THEN N0 = 212

IF M = 9 THEN N0 = 243

IF M = 10 THEN N0 = 273

IF M = 11 THEN N0 = 304

IF M = 12 THEN N0 = 334

N = CH + N0

PRINT " N="; N

NN = N

Y = .0153276#

A = .9856 * (N - .75)

A1 = A * 3.14159 / 180

B = A - 2.257

c = SIN(A1) * 1.91 + A - 79.957

AR = SIN(c * 3.14159 / 180) * .3978

DR = ATN(AR / SQR(1 - AR ^ 2))

ZP = SIN(2 * c * 3.1415926# / 180) / 6

E = -(SIN(B * 3.1415926# / 180) * .128 - ZP)

W = SIN(DR) * SIN(F * 3.1415926# / 180) + Y

F1 = F * 3.1415926# / 180

G = (1 / COS(F1))

U = W * G

P = -1 / COS(DR) * U

X = 0 'вычисление арккосинуса методом подекадного приближения

D = .1

N = 6

110 X = X + D

Y = COS(X) - P

IF Y > 0 THEN 110

X = X - D

D = D / 10

N = N - 1

IF N > 0 THEN 110

X = X * 180 / 3.1415926#

H = (225 - LM - X) / 15 - E

H1 = INT(H)

H2 = H1

M = (H - H1) * 60

H1V = H1

PRINT "  ВОСХОД СОЛНЦА:"; H1; "час.";INT(M); "мин."

M2 = INT(M)

N = CH + N0

Y = .0153276#

A = .9856 * (N - .25)

A1 = A * 3.14159 / 180

B = A - 2.257

c = SIN(A1) * 1.91 + A - 79.957

AR = SIN(c * 3.1415926# / 180) * .3978

DR = ATN(AR / SQR(1 - AR ^ 2))

ZP = SIN(2 * c * 3.1415926# / 180) / 6

E = -(SIN(B * 3.14159 / 180) * .128 - ZP)

W = SIN(DR) * SIN(F * 3.1415926# / 180) + Y

F1 = F * 3.1415926# / 180

G = (1 / COS(F1))

U = W * G

P = -1 / COS(DR) * U

X = 0

D = .1

N = 6

1100 X = X + D

Y = COS(X) - P

IF Y > 0 THEN 1100

X = X - D

D = D / 10

N = N - 1

IF N > 0 THEN 1100

X = X * 180 / 3.1415926#

H = (225 - LM + X) / 15 - E

H1 = INT(H)

H1N = H1

M = (H - H1) * 60

PRINT"   ЗАХОД СОЛНЦА:"; H1; "час."; INT(M);"мин."

PR = (H1N + INT(M) / 60 - H2 - M2 / 60)

 PRINT"   ПРОДОЛЖИТЕЛЬНОСТЬ ДНЯ"

 Min = INT((PR -INT(PR)) * 60 + .005)

 PRINT"  "; INT(PR); "час."; Min; "мин."

 SLEEP

 CLS

IF MN = 1 THEN P = 31: M$ = "ЯНВАРЬ"

IF MN = 3 THEN P = 31: M$ = "МАРТ"

IF MN = 4 THEN P = 30: M$ = "АПРЕЛЬ"

IF MN = 5 THEN P = 31: M$ = "МАЙ"

IF MN = 6 THEN P = 30: M$ = "ИЮНЬ"

IF MN = 7 THEN P = 31: M$ = "ИЮЛЬ"

IF MN = 8 THEN P = 31: M$ = "АВГУСТ"

IF MN = 9 THEN P = 30: M$ = "СЕНТЯБРЬ"

IF MN = 10 THEN P = 31: M$ = "ОКТЯБРЬ"

IF MN = 11 THEN P = 30: M$ = "НОЯБРЬ"

IF MN = 12 THEN P = 31: M$ = "ДЕКАБРЬ"

IF MN = 2 THEN M$ = "ФЕВРАЛЬ"

PRINT "         "

PRINT CH; M$

PRINT "  Широта", F

PRINT "  Долгота", LM

IF H1 > 24 THEN H1 = H1 - 24

IF H1V < 0 THEN H1V = H1V + 24

PRINT "  ВОСХОД СОЛНЦА:"; H1V; "час.";M2; "мин."

PRINT "  ЗАХОД СОЛНЦА:"; H1; "час.";INT(M); "мин."

PRINT "  ПРОДОЛЖИТЕЛЬНОСТЬ ДНЯ:"; INT(PR);"час."; Min; "мин."

PRINT "  (Время московское)"

TMV = H1V - 2 +INT(LM / 15)

TMZ = H1 - 2 + INT(LM / 15)

IF TMZ < 0 THEN TMZ = TMZ + 24

IF TMV > 24 THEN TMV = TMV - 24

PRINT "   ВОСХОД:"; TMV; "час."; M2;"мин."

PRINT "   ЗАХОД:"; TMZ; "час."; INT(M);"мин."

PRINT "  (Время местное)"

END

 

 

 

 

 

 

 

 

 

 

 
Конструктор сайтов - uCoz