Скрипт, проверяющий високосный, или нет, год., Ishly, 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. Вариант. И если не трудно, то можно показать как бы это выглядело, если бы я вбивал всё через саму консоль (или терминал, вроде бы одно и то же, только на разных линуксах, по-разному называется).
|
- Скрипт, проверяющий високосный, или нет, год., vic, 19:57 , 24-Янв-09 (2)
>Нужно написать скрипт, который будет проверять, указанный в качестве аргумента, в командной >строке, год, и выводить результат в виде сообщения "год високосный", "год >не високосный". [ $(($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 сделать иначе с запуском будешь иметь проблемы ты ;)
- способ, другой :), Andrey Mitrofanov, 12:21 , 25-Янв-09 (3)
>[ $(($1 % 4 == 0 && ($1 % 100 != 0 >|| $1 % 400 == 0) )) -eq 1 ][ "`date -d "$1-03-01 -1 day" +%d`" == "29" ] > && echo "високосный" || echo "не високосный"
- способ, другой :), Ishly, 19:07 , 25-Янв-09 (4)
>>[ $(($1 % 4 == 0 && ($1 % 100 != 0 >>|| $1 % 400 == 0) )) -eq 1 ] > >[ "`date -d "$1-03-01 -1 day" +%d`" == "29" ] > >> && echo "високосный" || echo "не високосный" Спасиб.)
- способ, другой :), vic, 13:41 , 26-Янв-09 (7)
>>[ $(($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 [/вредничает и ворчит] хотя красиво ;)
- способ, другой :), phpcoder, 13:52 , 26-Янв-09 (10)
>>>[ $(($1 % 4 == 0 && ($1 % 100 != 0 >>>|| $1 % 400 == 0) )) -eq 1 ] >> >>[ "`date -d "$1-03-01 -1 day" +%d`" == "29" ] >хотя красиво ;) Вот только == не портабельно, надо = использовать.
- способ, другой :), vic, 14:39 , 26-Янв-09 (14)
>>>>[ $(($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 ]
- Скрипт, проверяющий високосный, или нет, год., Ishly, 19:13 , 25-Янв-09 (5)
>[оверквотинг удален] >=) >по жизни такая фигня происходит с периодом обращения планеты во круг солна >и вокруг себя, что не точно каждый 4 год високосный, потому >формула юный падаван иная. Но и эта не совсем точная :)) > >ЗЫ Астрономию походу в школе отмеили О_о > >вышеуказанную строку в этот файл вбивай, вай =) >и не забудь chmod +x script.sh сделать иначе с запуском будешь иметь >проблемы ты ;) Спасиб. Школа моя странная, всего 1 семестр ОС даёт; ) Известны мне рассуждения эти, и что сутки длятся не ровно 24 часа...)
- Скрипт, проверяющий високосный, или нет, год., const86, 10:07 , 26-Янв-09 (6)
>Известны мне рассуждения эти, и что сутки длятся не ровно 24 часа...) Нет, сутки как раз 24 часа, а то иначе у нас бы день с ночью ролями менялись. Зима с летом не меняются как раз благодаря 29 февраля, появляющемуся в удачные моменты.
- Скрипт, проверяющий високосный, или нет, год., vic, 13:44 , 26-Янв-09 (8)
>>Известны мне рассуждения эти, и что сутки длятся не ровно 24 часа...) > >Нет, сутки как раз 24 часа, а то иначе у нас бы >день с ночью ролями менялись. Зима с летом не меняются как >раз благодаря 29 февраля, появляющемуся в удачные моменты. тупо костыль планетарного масштаба :)))
- %*) Как сложно жить, девочки!, Andrey Mitrofanov, 13:51 , 26-Янв-09 (9)
>Нет, сутки как раз 24 часа, а то иначе у нас бы день с ночью ролями менялись."Астрономию походу в школе отмеили О_о" -- по факту, видимо, давно. Сутки, действительно, 24 часа. А вращение Земли, говорят, замедляется. ""Earth's rotation period relative to the fixed stars, called its stellar day is ... 23h 56m 4.098 903 691s ...""(Wikipedia) ---Я молчать не буду! Тигру в клетке мяса не докладывают!!(c)
- заговор астрономического масштаба, Andrey Mitrofanov, 14:02 , 26-Янв-09 (11)
>>Нет, >>то иначе у нас бы день с ночью ролями менялись. >"Астрономию походу в школе отмеили О_о" -- по факту, видимо, давно. >stellar day is ... 23h 56m 4.098 903 691s$ echo $(( 12*60*60*1000/(4*60*1000-4098) )) 183 $ _ Вот я и спашиваю, меняются ли "у нас" ночь с днём раз в пол-года? %) >---Я молчать не буду! Тигру в клетке мяса не докладывают!!(c) - %*) Как сложно жить, девочки!, const86, 14:07 , 26-Янв-09 (12)
>""Earth's rotation period relative to the fixed stars, called its stellar day >is ... 23h 56m 4.098 903 691s ...""(Wikipedia) Ваши наручные часы показывают время по Солнцу или по "fixed stars"? Люди, заявляющие о том, что в сутках не ровно 24 часа, как раз под сутками понимают те, что по Солнцу.
- не быть мне космонавтом :/, Andrey Mitrofanov, 14:20 , 26-Янв-09 (13)
>Ваши наручные часы показывают время по Солнцу или по "fixed stars"? >Люди, заявляющие о том, что в сутках не ровно 24 часа, >как раз под сутками понимают те, что по Солнцу. Ну, я в общем-то знал, что с астрономией у меня даже хуже, чем с географией. Нефига было и начинать...
- %*) Как сложно жить, девочки!, Ishly, 19:45 , 26-Янв-09 (15)
>>""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.
- %*) Как сложно жить, девочки!, const86, 23:40 , 26-Янв-09 (16)
1) Нет, подвох не в арифметике, а в астрономии :) Солнце описывает круг на небе за 24 часа (неточность если и есть, то сильно меньше секунды), а звёзды - как раз за 23:56:04. Вы таки смотрите на Солнце или на звёзды?
|