Определить, високосный год или нет
С клавиатуры вводится год. Программа должна определять високосный это год или нет. Вывести на экран соответствующую надпись, а также количество дней в году.
Примеры выполнения программы
Введите год: 1913 Количество дней в году: 365 Это невисокосный год.
Введите год: 2012 Количество дней в году: 366 Это високосный год.
Программа на языке Паскаль
var year: word; begin write('Введите год: '); readln(year); if year mod 4 = 0 then if (year mod 100 = 0) and (year mod 400 <> 0) then year := 365 else year := 366 else year := 365; writeln('Количество дней в году: ', year); if year = 365 then writeln('Это невисокосный год.') else writeln('Это високосный год.'); end.
В високосном годе 366 дней, тогда как в обычном 365. Високосными годами являются все года делящиеся нацело на 4 за исключением столетий, которые не делятся нацело на 400.
Алгоритм решения задачи:
- Проверяем делится ли год на 4. Если нет, то год уже невисокосный.
- Если год делится на 4, то проверяем делится ли он на 100. Если нет, то год однозначно високосный.
- Если год делится на 100, но при этом не делится на 400, то год невисокосный.
Метод определения високосного года
В этой статье описывается, как определить, является ли год в дате, используемой в документе Microsoft Excel, високосным.
Дополнительная информация
Система дат, используемая Excel, основана на григорианском календаре, впервые установленном в 1582 году папой римским Григорием XIII. Этот календарь был разработан для исправления ошибок, привнесенных менее точным юлианским календарем.
В григорианском календаре обычный год состоит из 365 дней. Поскольку фактическая продолжительность звездного года (период обращения Земли вокруг Солнца) составляет 365.2425 дней, «високосный год» в 366 дней используется один раз каждые четыре года для устранения ошибки, вызванной тремя обычными (но короткими) годами. Любой год, который делится на 4 без остатка, является високосным годом: например, 1988, 1992 и 1996 годы являются високосными годами.
Тем не менее, есть еще небольшая ошибка, которая должна быть учтена. Чтобы устранить эту ошибку, григорианский календарь предусматривает, что год, который делится без остатка на 100 (например, 1900) является високосным годом только в том случае, если он также без остатка делится на 400.
По этой причине следующие годы не являются високосными:
1700, 1800, 1900, 2100, 2200, 2300, 2500, 2600
Это потому, что они делятся без остатка на 100, но не на 400.
Следующие годы – високосные: 1600, 2000, 2400
Это потому, что они делятся без остатка на 100 и 400.
Поскольку версии Microsoft Excel, более ранние, чем Excel 97, обрабатывают только годы с 1900 по 2078 год, только для 1900 года действует правило исключения 100/400 високосных лет в Microsoft Excel. Однако для совместимости с другими программами Microsoft Excel рассматривает 1900 год как високосный.
Как определить, является ли год високосным
Чтобы определить, является ли год високосным, выполните следующие действия:
- Если год делится на 4 без остатка, перейдите на шаг 2. В противном случае перейдите к выполнению действия 5.
- Если год делится на 100 без остатка, перейдите на шаг 3. В противном случае перейдите к выполнению действия 4.
- Если год делится на 400 без остатка, перейдите на шаг 4. В противном случае перейдите к выполнению действия 5.
- Год високосный (366 дней).
- Год не високосный год (365 дней).
Формула, чтобы определить, является ли год високосным
Используйте следующую формулу, чтобы определить, является ли номер года, который вводится в ячейку (в данном примере, ячейка A1), високосным годом:
=IF(OR(MOD(A1,400)=0,AND(MOD(A1,4)=0,MOD(A1,100)<>0)),"Leap Year", "NOT a Leap Year")
| Если значение в ячейке A1 это | Формула возвращает значение |
|---|---|
| 1992 | Високосный год |
| 2000 | Високосный год |
| 1900 | НЕ високосный год |
Обратная связь
Были ли сведения на этой странице полезными?
Високосный год без условий и циклов C++
Как найти високосный год через линейный алгоритм(без условий и циклов)? Возникли трудности, не понимаю алгоритм. Код:
#include using namespace std; int main() < /* 1. Год делится на 400->високосный->конец 2. Год делится на 100->не високосный->конец 3. Год делится на 4->високосный->конец 4. Год не високосный->конец 5. Всё */ int year, result; cout > year; result = year / 100; result = year - result; result = result % 4; cout
Отслеживать
48.1k 17 17 золотых знаков 56 56 серебряных знаков 100 100 бронзовых знаков
Проверить, является ли год високосным
2.составить програму которая выводит на екран меню 1.Первое 2.Второе 3.Трете.И взависимости от вибраного пункта выдает одно из сообщений(получите суп,получите картошку,получите кампот,оставайтесь голодным)
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Проверить, является ли заданный год високосным и вывести следующий високосный год
В первую строку выведите YES, если данный год является високосным и NO, если не является. Во второй.

Проверить, является ли год високосным
#include <iostream> bool is_leap(int year) < if(year % 4 == 0) < return true;.
Проверить, является ли год високосным
Написать программу, которая проверяет, является ли год високосным (операторы if, else)
Проверка, является ли год високосным
Написать программу, которая проверяет является ли год високосным.( год является високосным, если.
683 / 232 / 16
Регистрация: 15.10.2007
Сообщений: 1,247
1 2 3 4 5 6 7 8 9 10
#include int main(){ int god; printf("vvedite god "); scanf("%d",&god); if(god%4) printf("nevesokosniy god\n"); else printf("vesokosniy\n"); return 0; }
Добавлено через 7 минут 49 секунд
1 2 3 4 5 6 7 8 9 10 11 12 13
#include int main(){ int vibor; printf("pervoe vtoroe tretye\n"); scanf("%d",&vibor); switch(vibor){ case 1: printf("poluchite sup\n"); break; case 2: printf("poluchite kartoshku\n"); break; case 3: printf("poluchite kampot\n"); break; default: printf("ostavaytes golodnim\n"); } return 0; }
176 / 168 / 27
Регистрация: 12.01.2009
Сообщений: 430

Сообщение было отмечено ildwine как решение
Решение
Сообщение от Mecid 
1 2 3 4 5 6 7 8 9 10
#include int main() int god; printf("vvedite god "); scanf("%d",&god); if(god%4
не високосный год-не кратный 4 либо кратный 100 и не кратный 400
683 / 232 / 16
Регистрация: 15.10.2007
Сообщений: 1,247
Спс за поправку
Заблокирован
Пацаны та шо вы прям усложняеете отнимаем от года столетие ну например :
1984 — 1900 = 84
2008 — 2000 = 8
и делим на 4-ри и пипец, прикинте каждое столетие начинается с високосного
И никаких вам тяжеловесных проверок типа кратный 100 некратный 400.
Добавлено через 20 минут 27 секунд
А это по поводу супа и картошки, реально долго смеялся с этого задания)))))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
#include #include #include void main() { printf("\tMenu\r\n"); printf("1 - Pervoe\r\n"); printf("2 - Vtoroe\r\n"); printf("3 - Tret'e\r\n"); switch(getch()) { case 48 + 1 : printf("\r\npolychite syp\r\n"); break; case 48 + 2 : printf("\r\npolychite kartoshky\r\n"); break; case 48 + 3 : printf("\r\npolychite kampot\r\n"); break; default : printf("\r\nostavaites' golodnim :P\r\n"); break; } printf("\r\n1 - povtorit' zakaz\r\n"); if(getch() == 49) main(); }
176 / 168 / 27
Регистрация: 12.01.2009
Сообщений: 430
Сообщение от YurA_280784 
Пацаны та шо вы прям усложняеете отнимаем от года столетие ну например :
1984 — 1900 = 84
2008 — 2000 = 8
и делим на 4-ри и пипец, прикинте каждое столетие начинается с високосного
И никаких вам тяжеловесных проверок типа кратный 100 некратный 400.
нука с 1900 и 2000 годом такой же фокус
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
Сообщение от YurA_280784 
Пацаны та шо вы прям усложняеете отнимаем от года столетие ну например :
1984 — 1900 = 84
2008 — 2000 = 8
и делим на 4-ри и пипец, прикинте каждое столетие начинается с високосного
И никаких вам тяжеловесных проверок типа кратный 100 некратный 400.
Заблокирован
А так понятней
1 2 3 4
char chBuf[4]; sprintf(chBuf,"%d",year); if(atoi(chBuf + 2) % 4 == 0) printf("Год високосный\r\n");
176 / 168 / 27
Регистрация: 12.01.2009
Сообщений: 430
Сообщение от YurA_280784 
А так понятней
1 2 3 4
char chBuf[4]; sprintf(chBuf,"%d",year); if(atoi(chBuf + 2) % 4 == 0) printf("Год високосный\r\n");
1900 -не високосный,у тебя получается високосный
Заблокирован
Дружище 1900 високостный был. Проверь!
Добавлено через 3 минуты 40 секунд
Ах ты ж чьёрт внатуре 1900 не высокосный
683 / 232 / 16
Регистрация: 15.10.2007
Сообщений: 1,247
Високосным (то есть в котором 366 дней за счет 29 февраля) годом являются год, номер которого делится без остатка на 4, кроме тех, числа
которых оканчиваются на два нуля, но не делятся на 400, поэтому, например, годы 1700, 1800, 1900 не являются високосными, а 2000 является.
В юлианском календаре, или по старому стилю, все годы, оканчивающиеся на нули, — високосные: 1700, 1800, 1900 и т.д. по григорианскому календарю, или новому стилю, високосными являются не все годы, оканчивающие столетия, а только те из них, две первые цифры которых делятся на 4. Таким образом, становятся високосными 1600-й, 2000-й, 2400-й. Годы 1700-й, 1800-й и 1900-й объявлялись простыми. Подобное новшество сокращало каждые 400 лет на три дня, приближая продолжительность календарного года к тропическому.