Программа с меню: Вывод количества дней, прошедших от Рождества Христова до введённой даты - C (СИ)
Формулировка задачи:
Разработать программу, меню которой позволяет выполнить следующие функции:
1. Вввод даты (число, месяц, год)
2. Ввод даты в форме: 1 января 2010
3. Ввод даты в форме: 01.01.10
4. Вычисление по дате дня недели и порядкового номера дня в году
5. Вывод количества дней, прошедших от Рождества Христова до введёной даты
6. Информация о версии и авторе программы
7. Выход из программы
Всем добрый вечер.
Как реализоваться подобное меню (консольное)? (буду очень признателен, если кто-то скинет пример кода)
Также не знаю как сделать пункты 4,5
P.S. До этого с Си дела не имел.
Решение задачи: «Программа с меню: Вывод количества дней, прошедших от Рождества Христова до введённой даты»
textual
Листинг программы
#include <stdio.h>
/*Разработать программу, меню которой позволяет выполнить следующие функции:
1. Вввод даты (число, месяц, год)
2. Ввод даты в форме: 1 января 2010
3. Ввод даты в форме: 01.01.10
4. Вычисление по дате дня недели и порядкового номера дня в году
5. Вывод количества дней, прошедших от Рождества Христова до введёной даты
6. Информация о версии и авторе программы
7. Выход из программы*/
int main()
{
int a, b, c, d = 0, S = 0, dw, i, m, y;
printf("Input day:\n");
scanf("%d", &c);
printf("month (numbers only):\n");
scanf("%d", &b);
printf("year:\n");
scanf("%d", &a);
y = a;
for(m = 1; m < b; ++m){
if(m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12){
for(i = 1; i <= 31; ++i)
++d;
}
if(m == 4 || m == 6 || m == 9 || m == 11){
for(i = 1; i <= 30; ++i)
++d;
}
if(m == 2){
if(y % 100 == 0){
if(y % 400 == 0){
for(i = 1; i <= 29; ++i)
++d;
}
else
for(i = 1; i <= 28; ++i)
++d;
}
else
if(y % 4 == 0){
for(i = 1; i <= 29; ++i)
++d;
}
else
for(i = 1; i <= 28; ++i)
++d;
}
}
printf("Serial number of days in a year\n%d\n", (d + c));
for(i = 1; i < a; ++i){
if(i % 4 == 0){
if(i % 100 == 0){
if(i % 400 == 0)
S = S + 366;
else
S = S + 365;
}
else
S = S + 366;
}
else
S = S + 365;
}
dw = (S + d + c) - (S + d + c) / 7 * 7;
if(dw == 0)
dw = 7;
printf("Number of days from AD started:\n%d\n", S + d + c);
printf("Weekday:\n%d\n", dw);
puts("Program "Days" v1.0 by LFC Cyberforum.ru 2016.03.09");
return 0;
}
Объяснение кода листинга программы
- Ввод даты (число, месяц, год)
- Ввод даты в форме: 1 января 2010
- Ввод даты в форме: 01.01.10
- Вычисление по дате дня недели и порядкового номера дня в году
- Вывод количества дней, прошедших от Рождества Христова до введёной даты
- Информация о версии и авторе программы
- Выход из программы