Задали домашнее задание, но не успели объяснить.
«По указанному пользователем календарному году, необходимо определить високосный ли он. Допустимый диапазон: 0-2017 года»
Подскажите, пожалуйста, с помощью каких функций и операторов реализуется данная задача?
Речь идёт о языке программирования С++
Я не программист, я только учусь
Последний раз редактировалось Medici; 09.06.2018 в 11:47 .
Регистрация: 09.01.2008
Сообщений: 26,238
да так же, как и в обычной жизни — с помощью проверки делимости.
в более-менее простом виде эта функция может выглядеть так:
int isLeapYear(int year)
// взято со стековерфлоу
Регистрация: 15.02.2010
Сообщений: 15,416
Никаких, кроме ввода/вывода. Только условный оператор и деление с остатком.
Вы алгоритм то знаете или даже в вики не ходили?
Регистрация: 09.06.2018
Сообщений: 4
Я не программист, я только учусь
Регистрация: 09.06.2018
Сообщений: 4
Знаю, но, увы у нас было всего лишь 2 занятия по программированию. Я в этом плане новичок новичок, вот и пытаюсь разобраться. Потому что до этого делали задачки несколько другого плана.
КАК ПОНЯТЬ КАКОЙ ГОД ВИСОКОСНЫЙ? #год #високосныйгод #образование #окружающиймир #биология #огэ #егэ
Я не программист, я только учусь
Форумчанин
Регистрация: 17.09.2017
Сообщений: 265
В григорианском календаре високосным является:
год, номер которого делится нацело на 400
или
год, номер которого делится на 4, но не делится на 100
немножко криво но вот смысл
а дата которая тут выводится это день программиста в зависимости от года)))
если не понятно что то то пишите доработаю)))
#include using namespace std; void qwe(int n) < if(n % 400==0||n % 4==0 n % 100!=0) // тут случай когда он високостный < if(n<10)cout<<«12/09/000″<<«год високостный»<=10)cout=100)cout=1000)cout else < if(n<10)cout<<«13/09/000″<<«не високостный»<=10)cout=100)cout=1000)cout > int main ()< setlocale(0,»»); int n; cin>>n; // ввод даты и передача её в функцию qwe(n); >
Последний раз редактировалось Александр121; 09.06.2018 в 11:42 .
Источник: www.programmersforum.ru
Java-программа для поиска високосного года
В этой статье показано, как с помощью программы на Java можно проверить, является ли введенный год високосным или нет. Хотя задача на первый взгляд кажется довольно простой, вычисления немного сложны. Мы можем легко предположить, что все високосные годы кратны 4. То есть, если конкретный год делится на 4 без остатка, то год является високосным. Однако это наивная реализация программы високосного года. Год также может быть високосным, если выполняются следующие условия:
- Год считается високосным, если он делится на 100.
- Если конкретный год делится на 100, то он также должен делиться на 400.
- Помимо двух условий, указанных выше, если какой-либо другой год делится на 4, этот год также обязательно является високосным.
Алгоритм
- Start
- Инициализируйте целочисленную переменную с именем year. Эта переменная определяет, является ли год високосным или нет.
- Если условие проверяет, делится ли переменная на 4, но не на 100. Если условие истинно, в консоль выводится «високосный год».
- Если год делится на 400, то в консоль снова выводится «високосный год».
- Для всех остальных случаев, кроме определенных выше, выведите «не високосный год».
Пример кода для реализации проблемы високосного года
импортировать java.util.Scanner; демо публичного класса < public static void main ( String args [] ) < int year; System.out.println («Введите год::»); Scanner sc = новый сканер (System.in); год = sc.nextInt (); if (((year%4==0)(year%100!=0))||(year%400==0)) System.out.pintln(«Указанный год високосный»); else System.out.println(«Указанный год не високосный»); >>
ВЫХОД 1:
Високосный год — Лучшая песня о любви (видеоклип 1998 года)
Введите год:: 2020
Указанный год является високосным
ВЫХОД 2:
Введите год:: 2017
Указанный год не является високосным
Автор
Full Stack Developer с более чем 10-летним опытом создания технического контента. Посмотреть все сообщения
0 комментариев
Оставить комментарий Отменить ответ
Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются ваши данные комментариев.
Источник: gocoding.org
Високосные годы
Надеюсь, вы отлично встретили новый год, и сейчас у вас отличное праздничное настроение. По крайней мере у меня это именно так — мы не пили никакого алкоголя, и чокнулись в полночь бокалами с водой из пятилитровой канистры, поэтому мы проснулись, погуляли, и тут я вспомнил одно из вчерашних поздравлений с Новым годом:
Желаю, чтобы в конце каждого года ты, вспоминая то, что было за последние 366 if ((year%4 == 0 and year%100 != 0) or (year%400 == 0)) else 365 дней, думал про себя:
— Ох, нифига себе, какой был экшен. Обязательно буду рассказывать внукам или напишу об этом потом книгу.
Итак, выше достаточно простой inline-способ определить количество дней в году (переменная year), который, по сути, полностью раскрывает их суть: в григорианском календаре високосными годами считаются те годы, порядковый номер которых либо кратен 4, но при этом не кратен 100, либо кратен 400. Иными словами, если год делится на 4 без остатка, но делится на 100 только с остатком, то он високосный, иначе — невисокосный, кроме случая, если он делится без остатка на 400 — тогда он всё равно високосный.
Например, 2013 год невисокосный, 1700, 1800 и 1900 — опять же невисокосные годы, а вот 2000, 2004, 2008 и 2012 — високосные.
Но что, если мы не помним, сколько дней в високосных (366 дней) и невисокосных (365 дней) годах, или просто хотим написать определение количества дней в году максимально быстро? Можно ли сделать так на Python? Конечно же, можно.
Итак, в Python есть модуль calendar. Он как раз отлично подходит для того, чтобы узнать, является ли тот или иной год високосным (или, например, сколько високосных годов в определённом интервале), определить количество дней в месяце, получить номер дня недели для определённой даты и так далее.
В частности, мы можем получить количество дней в каждом месяце года, и просто сложить.
Функция calendar.monthrange принимает номер года в качестве первого аргумента и номер месяца в качестве второго аргумента. Возвращает номер дня недели первого числа данного месяца и количество дней в данном месяце:
>>> import calendar >>> calendar.monthrange(2013, 1) (1, 31)
Соответственно, мы можем подсчитать общее количество дней для всех 12 месяцев, и получить таким образом количество дней для данного года:
>>> import calendar >>> year = 2013 >>> sum(map(lambda x: calendar.monthrange(year, x)[1], range(1, 13))) 365
Но если подумать о том, как именно выполняется эта строка, становится очевидно, что это решение очень неэффективно, если нужно посчитать количество дней для большого количества годов.
Проверяем с помощью модуля timeit.
На то, чтобы выполнить её 1 миллион раз, требуется 13.69 секунд, если import calendar делается один раз в начале. Если import calendar делается каждый раз, тогда 14.49 секунд.
Теперь попробуем другой вариант. Он требует знания того, сколько дней в високосных и невисокосных годах, но зато он очень короткий:
>>> import calendar >>> year = 2013 >>> 365+calendar.isleap(year) 365
И, как легко догадаться, он уже намного быстрее: 0.83 секунд, включая import calendar, и 0.26 секунд, если import calendar делается один раз в начале.
Давайте также посмотрим, сколько требуется времени самому первому варианту, с «ручным» подходом: 0.07 секунд для 2012 и 2013 и 0.12 секунд для 2000 (думаю, всем понятно, откуда берётся такая разница в скорости для этих годов).
Получается, что это и есть самый быстрый вариант из этих трёх:
>>> import calendar >>> year = 2013 >>> 366 if ((year%4 == 0 and year%100 != 0) or (year%400 == 0)) else 365 365
Конечно, в большинстве случаев вы можете использовать любой из этих вариантов — в конце концов, при определении количества дней в одном, двух, десяти или ста годах вы вряд ли почувствуете какую-либо разницу.
Пишите, оптимизируйте, улучшайте, тестируйте и считайте производительность — но не забывайте о читаемости исходников ваших программ.
С Новым годом! Удачи, счастья, радости и самосовершенствования в новом году.
- Python
- високосные годы
Источник: habr.com