The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Скрипт, проверяющий високосный, или нет, год."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"Скрипт, проверяющий високосный, или нет, год."  
Сообщение от Ishly email(ok) on 24-Янв-09, 19:01 
Нужно написать скрипт, который будет проверять, указанный в качестве аргумента, в командной строке, год, и выводить результат в виде сообщения "год високосный", "год не високосный".

Первое, что пришло на ум, это попытаться разделить числовое значение года
(напр.: 2009) на 4, и, если останется остаток, то вывести сообщение: "год високосный".

I. Вариант.
Я делал так:
1) Создал отдельную папку (напр.: scripts);
2) В папке создал текстовый файл, дал ему имя (напр.: script) и расширение (.sh)
в итоге получился текстовый файл - script.sh
3) И в нём уже набирал вот это:

#script 1 (как я понял, всё, что написано после знака "#" является комментарием, и эту строку можно опустить, разве что для удобства написать, чтО этот скрипт делает)
date +%Y
x=(date +%Y)
a=`expr $x % 4`; echo a=$a
if (a=0)
then echo "God visokosnij"
else echo "God ne visokosnij"
fi

Знаю, что где-то не правильно, только где? Не судите строго.)

Подскажите как правильно записать.

II. Вариант.
И если не трудно, то можно показать как бы это выглядело, если бы я вбивал всё через саму консоль (или терминал, вроде бы одно и то же, только на разных линуксах, по-разному называется).

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


2. "Скрипт, проверяющий високосный, или нет, год."  
Сообщение от vic (??) on 24-Янв-09, 19:57 
>Нужно написать скрипт, который будет проверять, указанный в качестве аргумента, в командной
>строке, год, и выводить результат в виде сообщения "год високосный", "год
>не високосный".


[ $(($1 % 4 == 0 && ($1 % 100 != 0 || $1 % 400 == 0) )) -eq 1 ] && echo "високосный" || echo "не високосный"

>Первое, что пришло на ум, это попытаться разделить числовое значение года
>(напр.: 2009) на 4, и, если останется остаток, то вывести сообщение: "год
>високосный".

а хотя бы погуглить на тему "високосный год, вычисление" религия не позволяет? =)
по жизни такая фигня происходит с периодом обращения планеты во круг солна и вокруг себя, что не точно каждый 4 год високосный, потому формула юный падаван иная. Но и эта не совсем точная :))

ЗЫ Астрономию походу в школе отмеили О_о

>1) Создал отдельную папку (напр.: scripts);
>2) В папке создал текстовый файл, дал ему имя (напр.: script) и
>расширение (.sh)
>в итоге получился текстовый файл - script.sh

вышеуказанную строку в этот файл вбивай, вай =)
и не забудь chmod +x script.sh сделать иначе с запуском будешь иметь проблемы ты ;)


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "способ, другой :)"  
Сообщение от Andrey Mitrofanov on 25-Янв-09, 12:21 
>[ $(($1 % 4 == 0 && ($1 % 100 != 0
>|| $1 % 400 == 0) )) -eq 1 ]

[ "`date -d "$1-03-01 -1 day" +%d`" == "29" ]

> && echo "високосный" || echo "не високосный"

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "способ, другой :)"  
Сообщение от Ishly email(ok) on 25-Янв-09, 19:07 
>>[ $(($1 % 4 == 0 && ($1 % 100 != 0
>>|| $1 % 400 == 0) )) -eq 1 ]
>
>[ "`date -d "$1-03-01 -1 day" +%d`" == "29" ]
>
>> && echo "високосный" || echo "не високосный"

Спасиб.)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "способ, другой :)"  
Сообщение от vic (??) on 26-Янв-09, 13:41 
>>[ $(($1 % 4 == 0 && ($1 % 100 != 0
>>|| $1 % 400 == 0) )) -eq 1 ]
>
>[ "`date -d "$1-03-01 -1 day" +%d`" == "29" ]
>
>> && echo "високосный" || echo "не високосный"

[вредничает и ворчит]
00) с точки зрения фанатов оптимизации - один лишний вызов другого процесса (date) :)))
01) не факт что конструкция "-1 day" поддерживается (мало ли не линуксовый date)
10) зачем числа как строки сравнивать есть же -eq
[/вредничает и ворчит]

хотя красиво ;)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "способ, другой :)"  
Сообщение от phpcoder email(??) on 26-Янв-09, 13:52 
>>>[ $(($1 % 4 == 0 && ($1 % 100 != 0
>>>|| $1 % 400 == 0) )) -eq 1 ]
>>
>>[ "`date -d "$1-03-01 -1 day" +%d`" == "29" ]
>хотя красиво ;)

Вот только == не портабельно, надо = использовать.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

14. "способ, другой :)"  
Сообщение от vic (??) on 26-Янв-09, 14:39 
>>>>[ $(($1 % 4 == 0 && ($1 % 100 != 0
>>>>|| $1 % 400 == 0) )) -eq 1 ]
>>>
>>>[ "`date -d "$1-03-01 -1 day" +%d`" == "29" ]
>>хотя красиво ;)
>
>Вот только == не портабельно, надо = использовать.

в первом или втором случае? я забыл (жутко краснеет) =)
a) [ $((!($1 % 4) && ($1 % 100 || !($1 % 400)))) -eq 1 ]
b) [ `date -d "$1-03-01 -1 day" +%d` -eq 29 ]

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Скрипт, проверяющий високосный, или нет, год."  
Сообщение от Ishly email(ok) on 25-Янв-09, 19:13 
>[оверквотинг удален]
>=)
>по жизни такая фигня происходит с периодом обращения планеты во круг солна
>и вокруг себя, что не точно каждый 4 год високосный, потому
>формула юный падаван иная. Но и эта не совсем точная :))
>
>ЗЫ Астрономию походу в школе отмеили О_о
>
>вышеуказанную строку в этот файл вбивай, вай =)
>и не забудь chmod +x script.sh сделать иначе с запуском будешь иметь
>проблемы ты ;)

Спасиб.
Школа моя странная, всего 1 семестр ОС даёт; )
Известны мне рассуждения эти, и что сутки длятся не ровно 24 часа...)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Скрипт, проверяющий високосный, или нет, год."  
Сообщение от const86 (ok) on 26-Янв-09, 10:07 
>Известны мне рассуждения эти, и что сутки длятся не ровно 24 часа...)

Нет, сутки как раз 24 часа, а то иначе у нас бы день с ночью ролями менялись. Зима с летом не меняются как раз благодаря 29 февраля, появляющемуся в удачные моменты.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Скрипт, проверяющий високосный, или нет, год."  
Сообщение от vic (??) on 26-Янв-09, 13:44 
>>Известны мне рассуждения эти, и что сутки длятся не ровно 24 часа...)
>
>Нет, сутки как раз 24 часа, а то иначе у нас бы
>день с ночью ролями менялись. Зима с летом не меняются как
>раз благодаря 29 февраля, появляющемуся в удачные моменты.

тупо костыль планетарного масштаба :)))

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "%*) Как сложно жить, девочки!"  
Сообщение от Andrey Mitrofanov on 26-Янв-09, 13:51 
>Нет, сутки как раз 24 часа, а то иначе у нас бы день с ночью ролями менялись.

"Астрономию походу в школе отмеили О_о" -- по факту, видимо, давно.
Сутки, действительно, 24 часа.
А вращение Земли, говорят, замедляется.

""Earth's rotation period relative to the fixed stars, called its stellar day is ... 23h 56m 4.098 903 691s ...""(Wikipedia)

---Я молчать не буду! Тигру в клетке мяса не докладывают!!(c)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "заговор астрономического масштаба"  
Сообщение от Andrey Mitrofanov on 26-Янв-09, 14:02 
>>Нет,
>>то иначе у нас бы день с ночью ролями менялись.
>"Астрономию походу в школе отмеили О_о" -- по факту, видимо, давно.
>stellar day is ... 23h 56m 4.098 903 691s

$ echo $(( 12*60*60*1000/(4*60*1000-4098) ))
183
$ _

Вот я и спашиваю, меняются ли "у нас" ночь с днём раз в пол-года? %)

>---Я молчать не буду! Тигру в клетке мяса не докладывают!!(c)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "%*) Как сложно жить, девочки!"  
Сообщение от const86 (ok) on 26-Янв-09, 14:07 
>""Earth's rotation period relative to the fixed stars, called its stellar day
>is ... 23h 56m 4.098 903 691s ...""(Wikipedia)

Ваши наручные часы показывают время по Солнцу или по "fixed stars"?
Люди, заявляющие о том, что в сутках не ровно 24 часа,
как раз под сутками понимают те, что по Солнцу.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "не быть мне космонавтом :/"  
Сообщение от Andrey Mitrofanov on 26-Янв-09, 14:20 
>Ваши наручные часы показывают время по Солнцу или по "fixed stars"?
>Люди, заявляющие о том, что в сутках не ровно 24 часа,
>как раз под сутками понимают те, что по Солнцу.

Ну, я в общем-то знал, что с астрономией у меня даже хуже, чем с географией. Нефига было и начинать...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

15. "%*) Как сложно жить, девочки!"  
Сообщение от Ishly email(ok) on 26-Янв-09, 19:45 
>>""Earth's rotation period relative to the fixed stars, called its stellar day
>>is ... 23h 56m 4.098 903 691s ...""(Wikipedia)
>
>Ваши наручные часы показывают время по Солнцу или по "fixed stars"?
>Люди, заявляющие о том, что в сутках не ровно 24 часа,
>как раз под сутками понимают те, что по Солнцу.

1) 23 часа 56 минут 4 секунды = 24 часа? (Поэтому я и сказал, что не ровно 24 часа, хотя сами используем 24h систему)
2) На тот момент я полагал, что високосный год появляется из-за этой неточности в неск. минут, т. к. к астрономии закончил обращаться давным-давно;
3) В 46 году до н. э. римский диктатор Гай Юлий Цезарь ввёл (разработанный александрийскими астрономами во главе с Созигеном) календарь, который был основан на том, что период обращения Земли вокруг Солнца примерно равен 365,25 суток (365 суток и 6 часов). Этот календарь был назван юлианским. Для того, чтобы выровнять шестичасовое смещение, был введён високосный год. Три года считалось по 365 суток, а в каждый год, кратный четырём, добавлялись одни дополнительные сутки в феврале.
(с) Wiki.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

16. "%*) Как сложно жить, девочки!"  
Сообщение от const86 (ok) on 26-Янв-09, 23:40 
1) Нет, подвох не в арифметике, а в астрономии :) Солнце описывает круг на небе за 24 часа (неточность если и есть, то сильно меньше секунды), а звёзды - как раз за 23:56:04. Вы таки смотрите на Солнце или на звёзды?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру