Как определить високосный год или нет c
Перейти к содержимому

Как определить високосный год или нет c

  • автор:

Определить, високосный год или нет

С клавиатуры вводится год. Программа должна определять високосный это год или нет. Вывести на экран соответствующую надпись, а также количество дней в году.

Примеры выполнения программы

Введите год: 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 год как високосный.

Как определить, является ли год високосным

Чтобы определить, является ли год високосным, выполните следующие действия:

  1. Если год делится на 4 без остатка, перейдите на шаг 2. В противном случае перейдите к выполнению действия 5.
  2. Если год делится на 100 без остатка, перейдите на шаг 3. В противном случае перейдите к выполнению действия 4.
  3. Если год делится на 400 без остатка, перейдите на шаг 4. В противном случае перейдите к выполнению действия 5.
  4. Год високосный (366 дней).
  5. Год не високосный год (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 лет на три дня, приближая продолжительность календарного года к тропическому.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *