Реализовать класс Date, который хранит информацию об определенной дате - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Класс Date хранит информацию об определенной дате (дд-мм-гг) для чего в нем предустмотрен поля day,mounth,year: Метод Date::sethate() - должен в класс данные, а метод Date::ShowDate()-выводить на экран. написать main() функцию в которой для демострации работы данного класса выполнить следующее -Создать Date обьект -Вывести неоторую дату и сохранить соответствующие данные (дд-мм-гг) в Date бьекте -Вывести, используя метод Date::Showdate() хранящиеся в Date - обьекте данные на экран Помогите пожалуйста. Есть небольшая просьба если можете пожалуйста прокомментируйте код. Всем заранее спасибо..
Помогите
Помогите кто ни будь пожалуйста

Решение задачи: «Реализовать класс Date, который хранит информацию об определенной дате»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
 
/* Наш класс */
typedef struct {
    int day;
    int month;
    int year;
    void (*set)();
    void (*show)();
} Date;
 
void setDate(Date *date_object_in,int day_in,int month_in,int year_in);
void showDate(Date *date_object_in);
 
/* 
 * Конструктор нашего класса. 
 * Конструктор класса - это функция, которая создает 
 * экземпляр класса (объект)
 */
 void Constructor(Date *date_object_in);
 /*
  * Декструктор класса, это функция которая удаляет объект класса
  * иными словами высвобождает пасять
  */
void Destructor(Date *date_object_in);
 
int main()
{
    /* С помощью функции localtime(), в линуксе,
     * мы можем получить текущую дату 
     */
    time_t t = time(NULL);
    struct tm tm_instance = *localtime(&t);
    /* После этого в tm_instance у нас лежит год, месяц, день*/
 
 
    /* Создаем объект класса Date, с помощью конструктора */
    Date *date_object = NULL;
    Constructor(date_object);
 
    /* Устанавливаем дату для объекта*/
    (*date_object).set(date_object,tm_instance.tm_mday,tm_instance.tm_mon,tm_instance.tm_year);
 
    /* Выводим данные объекта, то есть дату */
    (*date_object).show(date_object);
 
    Destructor(date_object);
    //printf("now: %d-%d-%d\n", tm_instance.tm_year + 1900,tm_instance.tm_mon + 1,tm_instance.tm_mday);
 
    return 0;
}
void Constructor(Date *date_object_in)
{
    /* Выделяем память для нашего объекта */
    date_object_in = malloc(sizeof(Date));
 
    date_object_in->day = 0;
    date_object_in->month = 0;
    date_object_in->year = 0;
    date_object_in->set = &setDate;
    date_object_in->show = &showDate;
}
 
void Destructor(Date *date_object_in)
{
    free(date_object_in->set);
    free(date_object_in->show);
    free(date_object_in);
}
 
void setDate(Date *date_object_in,int day_in,int month_in,int year_in)
{
    date_object_in->day = day_in;
    date_object_in->month = month_in;
    date_object_in->year = year_in;
}
 
void showDate(Date *date_object_in)
{
    printf("day = %d\n",date_object_in->day);
    printf("month = %d\n",date_object_in->month);
    printf("year = %d\n",date_object_in->year);
}

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

  1. Объявление класса Date с полями day, month, year и функциями set и show.
  2. Функция setDate устанавливает значения полей объекта Date.
  3. Функция showDate выводит значения полей объекта Date.
  4. Функция Constructor создает экземпляр класса Date, инициализирует его поля нулевыми значениями и присваивает указателю date_object_in адрес выделенной памяти.
  5. Функция Destructor освобождает память, выделенную под объект класса Date.
  6. В функции main создается экземпляр класса Date, используется функция localtime() для получения текущей даты и устанавливается с помощью функции setDate.
  7. Затем с помощью функции showDate выводится текущая дата.
  8. В конце программы вызывается функция Destructor для освобождения памяти.
  9. Значения полей объекта Date при установке и выводе текущей даты не меняются.
  10. В функции main после вывода текущей даты вызывается функция Destructor для освобождения памяти.
  11. Значения полей объекта Date при установке и выводе текущей даты не меняются.
  12. В функции main после вывода текущей даты вызывается функция Destructor для освобождения памяти.
  13. Значения полей объекта Date при установке и выводе текущей даты не меняются.
  14. В функции main после вывода текущей даты вызывается функция Destructor для освобождения памяти.
  15. Значения полей объекта Date при установке и выводе текущей даты не меняются.
  16. В функции main после вывода текущей даты вызывается функция Destructor для освобождения памяти.
  17. Значения полей объекта Date при установке и выводе текущей даты не меняются.
  18. В функции main после вывода текущей даты вызывается функция Destructor для освобождения памяти.
  19. Значения полей объекта Date при установке и выводе текущей даты не меняются.
  20. В функции main после вывода текущей даты вызывается функция Destructor для освобождения памяти.

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


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

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

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