Преобразовать дату; перевод с 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;
}

Объяснение кода листинга программы

  1. Предоставлен код на языке C.
  2. Код включает объявления двух массивов: MonthsNames[] и MonthsDays[].
  3. Массив MonthsNames[] содержит названия месяцев.
  4. Массив MonthsDays[] содержит количество дней в каждом месяце.
  5. В коде объявлены три переменные: day, month и year, которые используются для ввода даты.
  6. Переменная valid инициализируется значением true и используется для проверки корректности введенных данных.
  7. Код запрашивает у пользователя ввод дня, месяца и года.
  8. Значение месяца уменьшается на единицу, чтобы соответствовать нумерации с 0.
  9. Переменная valid проверяется на соответствие условиям: месяц в диапазоне от 0 до 11, день в диапазоне от 1 до количества дней в месяце, и год не должен быть високосным для месяцев, которые имеют 28 или 29 дней.
  10. Если все условия выполняются, код проверяет, является ли введенный месяц февралем.
  11. Если месяц - февраль, код проверяет, является ли год високосным и корректирует количество дней в феврале, если это необходимо.
  12. Если все проверки пройдены успешно, код выводит введенную дату в формате день месяц.год.
  13. Если обнаружена ошибка ввода, код выводит сообщение об ошибке в стандартный поток ошибок.
  14. Код возвращает 0, завершая выполнение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.7 из 5
Похожие ответы