• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Ошибка в коде, скрипт проверки фазы Луны

Регистрация
21 Окт 2014
Сообщения
9
Реакции
0
Баллы
0
Ошибка в коде, скрипт проверки фазы Луны

Доброго времени суток! Я самостоятельно изучаю JS и тут возникла необходимость написать программу, которая бы выводила фазу Луны по дате. Сам метод можете загуглить, я перевожу нашу григорианскую дату в юлианскую. Тк вот собственно: при пробе программа выдает, что это не число, тк что делать?
Вот код JS:
PHP:
var a, y, m, JDN, mounth, year, day; //JDN - номер юлианского дня, a,y,m - коэфиценты для вычисления JDN
	day = prompt('Введите день месяца',2);
	mounth = prompt('Введите номер месяца',8);
	year = prompt('Введите год',1995)
	a = alert((14-mounth)/12);
	y = alert(4800+year-a);
	m = alert(mounth+12*a-3);
	JDN = alert(day+(153*m+2)/12+(356*y)+(y/4)-(y/100)+(y/400)-32045);

Переношу тему в более подходящий раздел. Модератор.
 
На какой строчке выдает ошибку?
 
Могу бросить вам исходник file:///C:/Users/%D0%98%D0%BB%D1%8C%D1%8F/Desktop/luna.html
 
Извините:)) Ошибся просто на хосте и на локале работаю сразу сейчас сброшу
 
А, ну так ведь все просто.. С непривычки сразу не увидел. Сначала надо присвоить переменной вычисленное значение, а потом выводить.
 
или же, для сокращения строк кода, можно использовать такую конструкцию.. Хотя, выглядит не очень красиво, и лучше так не делать:

PHP:
alert (a = (14-mounth)/12);
 
К сожалению это не помогло, я думал, что может быть дело в приоритете функций и наличии унарных операции помимо бинарных
 
Опять JS усердно пытается мне доказать что это NaN, может быть какая-то ошибка в формуле?
 
Да, последнее вычисление он не рассчитывает (если только его сократить). Щас попробую вникнуть и разобраться.

У вас есть возможность в течение 10 минут редактировать предыдущие посты - не стоит каждый раз писать новое сообщение.
 
Краем глаза заметил, что если добавить пару скобок вот таким образом, то вычисление идет. Но насколько оно правильное - вопрос, в суть алгоритма я не вникал:
JDN = (day+(153*m+2)/12+((356*y)+(y/4)-(y/100)+(y/400)-32045))
 
var a, y, m, JDN, mounth, year, day;

day = prompt('Введите день месяца',2);
mounth = prompt('Введите номер месяца',8);
year = prompt('Введите год',1995);


a=(14-mounth)/12;
alert(a);

y =(4800+year)-a;
alert(y);

m = mounth+(12*a)-3;
alert(m);

JDN = (day+(153*m+2))/(12+(356*y)+(y/4))-((y/100)+(y/400))-32045;

alert(JDN);
 
Назад
Сверху