Другие языки программирования и технологии
написать программу на си
определить количество прожитых человеком дней по дате рождения и текущей дате . Вводится дата рождения в виде: число, месяц, год и текущая дата в том же виде. В современном календаре высокосным является год, делящийся без остатка на 4, за исключением года, кратного 100, среди которых высокосым являются те, которые кратны 400.
#include <stdio.h>
#include <conio.h>
#include <locale.h>
void main()
{
setlocale(LC_CTYPE, "Russian_Russia.1251");
int calendar[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int dayBeg, monthBeg, yearBeg;
int dayEnd, monthEnd, yearEnd;
int quantity = 365;
printf("\n");
printf(" Введите число рождения: "); scanf("%d", &dayBeg);
printf(" Введите месяц рождения: "); scanf("%d", &monthBeg);
printf(" Введите год рождения: "); scanf("%d", &yearBeg);
printf("\n");
printf(" Введите сегодняшнее число: "); scanf("%d", &dayEnd);
printf(" Введите текущий месяц: "); scanf("%d", &monthEnd);
printf(" Введите текущий год: "); scanf("%d", &yearEnd);
printf("\n");
for (int yearNext = yearBeg; yearNext < yearEnd; yearNext++)
{
quantity += 365;
if (yearNext % 4 != 0) continue;
else if (yearNext % 400 == 0)
{
quantity++;
continue;
}
else if (yearNext % 100 == 0) continue;
else quantity++;
}
for (int next = 0; next < monthBeg; next++) quantity -= calendar[next];
quantity -= dayBeg;
for (int future = 11; future >= monthEnd; future--) quantity -= calendar[future];
quantity += dayEnd;
if (yearEnd % 100 == 0 && monthEnd < 3 && dayEnd < 29) quantity--;
printf(" Количество прожитых дней = %d", quantity);
_getch();
}
#include <conio.h>
#include <locale.h>
void main()
{
setlocale(LC_CTYPE, "Russian_Russia.1251");
int calendar[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int dayBeg, monthBeg, yearBeg;
int dayEnd, monthEnd, yearEnd;
int quantity = 365;
printf("\n");
printf(" Введите число рождения: "); scanf("%d", &dayBeg);
printf(" Введите месяц рождения: "); scanf("%d", &monthBeg);
printf(" Введите год рождения: "); scanf("%d", &yearBeg);
printf("\n");
printf(" Введите сегодняшнее число: "); scanf("%d", &dayEnd);
printf(" Введите текущий месяц: "); scanf("%d", &monthEnd);
printf(" Введите текущий год: "); scanf("%d", &yearEnd);
printf("\n");
for (int yearNext = yearBeg; yearNext < yearEnd; yearNext++)
{
quantity += 365;
if (yearNext % 4 != 0) continue;
else if (yearNext % 400 == 0)
{
quantity++;
continue;
}
else if (yearNext % 100 == 0) continue;
else quantity++;
}
for (int next = 0; next < monthBeg; next++) quantity -= calendar[next];
quantity -= dayBeg;
for (int future = 11; future >= monthEnd; future--) quantity -= calendar[future];
quantity += dayEnd;
if (yearEnd % 100 == 0 && monthEnd < 3 && dayEnd < 29) quantity--;
printf(" Количество прожитых дней = %d", quantity);
_getch();
}
На ура не вспомню - ищи.. .
Но в Basic-е есть функция, которая возвращает требуемое, например, количество дней между датами DateDiff("D", Date1, Date2)
Но в Basic-е есть функция, которая возвращает требуемое, например, количество дней между датами DateDiff("D", Date1, Date2)
Проще использовать Unix timestamp. Вычислить разницу между текущей датой и введенной (получим количество секунд) . И потом поделить на 60*60*24 и округлить соответственно.
Похожие вопросы
- Написать программу на Си
- Помогите написать программу на Си
- Нужно написать программу на СИ++, которая переводит с паскаля на СИ++
- помогите написать программу на Си
- Написать программу на Си++
- помогите написать программу на Си
- оч срочно нужна помощь!!!!надо написать программу на си для задачи
- Помогите плиз написать программу(язык Си)
- Написать программу на Си
- помогите написать программу на си