Расчёт порядкового номера дня в году - C (СИ)
Формулировка задачи:
Привет всем!
Есть задача, надо написать программу на Си для вычесления номера дня в году по дате.
Например задана дата 22.01.1991 и программа должна показать что это 22 день в 1991 году.
Также необходимо учесть Високостный год.
прошу помочь с дальнейшем решением.
П.С: если понадобится могу перевести коментарии на русский!
Зарание спасибо.
#include <stdio.h>
#include <stdlib.h>
int main () {
int i, tag, monat, jahr;
int t = 0;
int arrTageImMonat[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
printf("Bitte zuerst einen Tag (1 - 31), dann einen Monat (1 - 12) und zum Schluss ein Jahr eingeben!");
printf("\nBitte Tag eingeben:");
scanf("%d", &tag);
printf("\nBitte Monat eingeben:");
scanf("%d", &monat);
printf("\nBitte Jahr eingeben:");
scanf("%d", &jahr);
if((jahr % 400) == 0 || ((jahr % 4) == 0 && (jahr % 100) != 0)) {
arrTageImMonat[2] = 29;
for (i = 0; i < monat; i++) {
t = t + arrTageImMonat[i];
}
t = t + tag;
printf("\nTag im Jahr = %d",t);
} else {
for (i = 0; i < monat; i++) {
t = t + arrTageImMonat[i];
}
t = t + tag;
printf("\n Tag im Jahr = %d",t);
}
scanf("%d", &jahr);
}Решение задачи: «Расчёт порядкового номера дня в году»
textual
Листинг программы
if((jahr % 400) == 0 || ((jahr % 4) == 0 && (jahr % 100) != 0))
Объяснение кода листинга программы
- Переменная
jahrсодержит год, для которого нужно определить порядковый номер дня в году. - В условии используется оператор
%для определения остатка от деления года на 400. - Если год делится на 400 без остатка, то он високосный и порядковый номер дня в году определяется как
01. - Если год делится на 4 без остатка, но не делится на 100 без остатка, то он високосный и порядковый номер дня в году определяется как
04. - Если год не делится ни на 4, ни на 100 без остатка, то он не високосный и порядковый номер дня в году определяется как
00.