Преобразовать дату; перевод с C++ - C (СИ)
Формулировка задачи:
Я студент 1ого курса, получил задание преобразовать дату но нужно на языке с, может кто окажет помощь, буду очень благодарен
#include <iostream> #include <cstdlib> int main() { int day; int month; int year; bool valid = true; std::cout << "Enter day: "; std::cin >> day; std::cout << "Enter month: "; std::cin >> month; std::cout << "Enter year: "; std::cin >> year; if (month >= 1 && month <= 12) { if (day >= 1 && day <= 31) { if (!(year % 4 == 0 && (year % 100 != 0 || year % 400 == 0))) { if (month == 2 && day > 28) valid = false; } else { if (month == 2 && day > 29) valid = false; } } else valid = false; } else valid = false; if (!valid) std::cout << "Input error!" << std::endl; else { std::cout << day << " "; switch (month) { case 1: std::cout << "yanvarya "; break; case 2: std::cout << "fevralya "; break; case 3: std::cout << "marta "; break; case 4: std::cout << "aprelya "; break; case 5: std::cout << "maya "; break; case 6: std::cout << "iyunya "; break; case 7: std::cout << "iyulya "; break; case 8: std::cout << "avgusta "; break; case 9: std::cout << "sentyabrya "; break; case 10: std::cout << "octyabrya "; break; case 11: std::cout << "noyabrya "; break; case 12: std::cout << "decabrya "; break; } std::cout << year << "g." << std::endl; } system("pause"); return 0; }
Решение задачи: «Преобразовать дату; перевод с C++»
textual
Листинг программы
#include <stdio.h> #include <stdbool.h> int main() { const char* MonthsNames[] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; const int MonthsDays[] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int day, month, year; bool valid = true; printf("day: "); scanf("%d", &day); printf("month: "); scanf("%d", &month); printf("year: "); scanf("%d", &year); --month; valid = (0 <= month) && (month < 12) && (0 < day) && (day <= MonthsDays[month]); if (valid && (month == 1)) { valid = (day <= MonthsDays[month] - !(((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))); } if (valid) { printf("%d %s %d.y\n", day, MonthsNames[month], year); } else { fprintf(stderr, "input error!"); } return 0; }
Объяснение кода листинга программы
- Предоставлен код на языке C.
- Код включает объявления двух массивов:
MonthsNames[]
иMonthsDays[]
. - Массив
MonthsNames[]
содержит названия месяцев. - Массив
MonthsDays[]
содержит количество дней в каждом месяце. - В коде объявлены три переменные:
day
,month
иyear
, которые используются для ввода даты. - Переменная
valid
инициализируется значениемtrue
и используется для проверки корректности введенных данных. - Код запрашивает у пользователя ввод дня, месяца и года.
- Значение месяца уменьшается на единицу, чтобы соответствовать нумерации с 0.
- Переменная
valid
проверяется на соответствие условиям: месяц в диапазоне от 0 до 11, день в диапазоне от 1 до количества дней в месяце, и год не должен быть високосным для месяцев, которые имеют 28 или 29 дней. - Если все условия выполняются, код проверяет, является ли введенный месяц февралем.
- Если месяц - февраль, код проверяет, является ли год високосным и корректирует количество дней в феврале, если это необходимо.
- Если все проверки пройдены успешно, код выводит введенную дату в формате
день месяц.год
. - Если обнаружена ошибка ввода, код выводит сообщение об ошибке в стандартный поток ошибок.
- Код возвращает 0, завершая выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д