Нужно написать программу с функцией, которая будет вычислять день недели по дате. Даты представлены структурой (год, месяц, день). В этой программе мне не очень понятна функция int date(Date z), а именно с 20 по 24 строку. Хочу разобраться в этой функции. Объясните, пожалуйста, эти строки.
#include #include #include using namespace std; struct Date < int day; int month; int year; >; int date(Date z) < int a; int y; int m; int R; a = (14 — z.month) / 12; y = z.year — a; m = z.month + 12 * a — 2; R = 7000 + (z.day + y + y / 4 — y / 100 + y / 400 + (31 * m) / 12); return R % 7; >int main() < setlocale(LC_ALL, «Russian»); Date z; char C; string S[7] = < «Воскресенье», «Понедельник», «Вторник», «Среда», «Четверг», «Пятница», «Суббота» >; cin >> z.day >> z.month >> z.year; cout
Отслеживать
задан 2 мар 2019 в 11:05
109 3 3 серебряных знака 12 12 бронзовых знаков
Покопайтесь в Интернете/литературе, как вычисляют юлианскую дату.
2 мар 2019 в 11:38
Спасибо большое!
2 мар 2019 в 12:12
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Название дня/месяца даты — Excel-Booster 13
В данной функции вычисляется, высокосный ли год или нет, так как каждые 14 лет, прибавляется день в феврале, то есть 29 дней, а в не высокосные годы, будет соответствено 28 дней.
А возвращает она, остаток от деления в данной функции, который и будет соответствовать дню недели. Так же отвечу для предыдущего человека, функция ‘_getch()’ ожидает от пользователя дальнейших действий, дабы консоль не закрылась после выполнения своей функции.
Отслеживать
ответ дан 14 мар 2019 в 5:38
182 1 1 золотой знак 2 2 серебряных знака 12 12 бронзовых знаков
Я попытался изъяснить принцип действия этого кода простыми словами, вот:
#include #include using namespace std; // Создает структуру «Date» с внутренними переменными (день, месяц, год). struct Date< int day; int month; int year; >; int date(Date z) < // Создает переменные. int a; int y; int m; int R; // Вычисляет непонятный для меня номер (от 14 отнимает месяц и разделяет на 12). a = (14 — z.month) / 12; // От года отнимает номер. y = z.year — a; // Вычисляет код года (к месяцу прибовляется (12 умноженное на номер), и отминусовуется 2). m = z.month + 12 * a — 2; // Вычисляет число (к 7000 прибавляется (математическое уравнение вычисления дня недели)). R = 7000 + (z.day + y + y / 4 — y / 100 + y / 400 + (31 * m) / 12); // Возвращает номер дня недели (седьмой процент числа). return R % 7; >int main()< // Устанавливает язык локализации «Русский». setlocale(LC_ALL, «Russian»); // Создает переменную даты (используя структуру «Date»). Date z; // Создает список дней недели. string S[7] = < «Воскресенье», «Понедельник», «Вторник», «Среда», «Четверг», «Пятница», «Суббота» >; // Принимает (день, месяц, год). cin >> z.day >> z.month >> z.year; // Отсылает в функцию «date» внесенную дату, и принимая номер дня ворачивает название. cout
У меня _getch(); функция не работает, и я так и не понял зачем она, поэтому я её убрал.
Дeвyшкa пo oшибкe пoпaдaeт в тюpьмy, гдe eё иcпoльзyют пo пoлнoй
Я вот предлагаю более оптимизированный вариант для компьютера нужно добавить библеотеку #include :
#include #include #include using namespace std; // Создает структуру «date» с внутренними переменными (день, месяц, год). struct date< int day, month, year; >; int get_weekday(date i)< // Заносит дату в переменную. std::tm time_in = < 0, 0, 0, i.day+1, i.month+1, i.year >; // Конвертирует дату в time_t. std::time_t time_temp = std::mktime( // Вносит time_t дату в переменную time_out. const std::tm * time_out = std::localtime( // Возрващаем из time_out день недели. return (int)time_out->tm_wday; > int main()< // Устанавливает язык локализации «Русский». setlocale(LC_ALL, «Russian»); // Создает переменную даты (используя структуру «date»). date z; // Создает список дней недели. string S[7] = < «Воскресенье», «Понедельник», «Вторник», «Среда», «Четверг», «Пятница», «Суббота» >; // Принимает (день, месяц, год). cin >> z.day >> z.month >> z.year; // Отсылает в функцию «get_weekday» внесенную дату, и принимая номер дня ворачивает название. cout
Источник: ru.stackoverflow.com
Написать программу которая по введенному номеру дня недели выдавал название дня
Получи верный ответ на вопрос «Написать программу которая по введенному номеру дня недели выдавал название дня . » по предмету Информатика, используя встроенную систему поиска. Наша обширная база готовых ответов поможет тебе получить необходимые сведения!
Новые вопросы по информатике
Напиши обратные действия. Снять — Открыть — Прилететь —
Перевести число 2-чной системы счисления в 10-чную: 1110000/2, 10001101/2
Какими знаками можно обозначить на письме звонкий и глухой удары в барабан?
1) В поезде 17 вагонов, 10-17-купейные, остальные-плацкарт. Ввести № вагона. напечатать вид. 2) Ввести 2 числа. Напечатать их частное или сообщить, что на 0 делить нельзя
Товар стоит a руб. b коп. За него заплатили c руб. d коп. Сколько сдачи требуется получить? программа паскаль
Главная » Информатика » Написать программу которая по введенному номеру дня недели выдавал название дня
Источник: 4i5.ru
Написать программу которая по номеру дня недели выдает название этого дня
Опубликовано 08.06.2017 по предмету Информатика от Гость >> Оцени ответ
Подпишись на наш канал в телеграм. Там мы даём ещё больше полезной информации для школьников!
- Алгебра
- Математика
- Русский язык
- Українська мова
- Информатика
- Геометрия
- Химия
- Физика
- Экономика
- Право
- Английский язык
- География
- Биология
- Другие предметы
- Обществознание
- История
- Литература
- Українська література
- Беларуская мова
- Қазақ тiлi
Показать ещё
Источник: www.shkolniku.com