Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2022, 22:43   #1
nonameii3ii
Пользователь
 
Регистрация: 16.04.2021
Сообщений: 73
По умолчанию класс Date (дата) с полями год, месяц, день

Здравствуйте,есть вот такое задание,буду очень благодарен если поможете с его решением,Спроектировать класс Date (дата) с полями год, месяц, день. В классе должны быть следующие функции:
1. конструктор по умолчанию;
2. конструктор копирования (copy constructor);
3. конструктор перемещения (move constructor);
4. оператор присваивания (copy assignment);
5. оператор перемещения (move assignment);
6. функция установки даты;
7. функция, которая добавляет 1 день к текущей дате;
8. функция вывода на экран текущей даты;
9. деструктор (destructor).
Написать программу, демонстрирующую работу с созданным классом.
nonameii3ii вне форума Ответить с цитированием
Старый 20.05.2022, 00:01   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,219
По умолчанию

Цитата:
Сообщение от nonameii3ii Посмотреть сообщение
буду очень благодарен если поможете с его решением
Конечно поможем! Начинайте решать.
Arigato вне форума Ответить с цитированием
Старый 21.05.2022, 13:09   #3
nonameii3ii
Пользователь
 
Регистрация: 16.04.2021
Сообщений: 73
По умолчанию

Arigato, Вот что я сделал,дальше ступор..не могу сделать функции установки даты и которая добавляет 1 день к текущей дате
Код:
#include <iostream>
#include<math.h>
#include <windows.h>
#include <string.h>
#include <utility>

using namespace std;

class Date
{

public:
	int year, month, day;
	Date() {
		cout << "0.Конструктор по умолчанию  " << this << endl;
		year=0;
		month=0;
		day=0;
		
	}
	Date(int year,int month,int day) {
		cout << "1.конструктор с параметрами  " << this << endl;
		this->year = year;
		this->month = month;
		this->day = day;

	}
	Date(const Date &date) {
		cout << "2.конструктор копирования  " << this << endl;
		year = date.year;
		month = date.month;
		day = date.day;

	}
	Date(Date&& data) noexcept {
		cout << "3.конструктор перемещения  " << this << endl;
		year = move(data.year);
		month = move(data.month);
		day = move(data.day);
	}
	Date&operator=(const Date& data) {
		cout << "4.оператор копирования  " << this << endl;
		year = data.year;
		month = data.month;
		day = data.day;
		return *this;
	}
	Date&operator=(Date&& date)noexcept {
		cout << "5.Оператор перемещения  " << this<< endl;
		year = move(date.year);
		month = move(date.month);
		day = move(date.day);
		return*this;
	}
	void Print1(){
		cout << "Год  " << year<<endl;
	cout << "Месяц  " << month<<endl;
	cout << "День  " << day<<endl;
	}
	~Date() {
		cout << "Деструктор вызван для объекта с адресом  " << this << endl;
		year = 0;
		month = 0;
		day = 0;
	}
	
	int getDay() const
	{
		return day;
	}

	int getMonth() const
	{
		return month;
	}

	int getYear() const
	{
		return year;
	}


	void setDay(int day)
	{
		cin>>day;
	}

	void setMonth(int month)
	{
		cin>>month;
	}

	void setYear(int year)
	{
		cin>>year;
	}
	void setDate(int day, int month, int year)
	{
		if (isValidDate(day, month, year))
		{
			setDay(day);
			setMonth(month);
			setYear(year);
		}
		else {
			throw std::string("Not valid date");
		}
	}

	void print() const
	{
		std::cout << day << '.'
			<< month << '.'
			<< year << std::endl;
	}



	static bool isValidDate(int day, int month, int year)
	{
		if ((day < 1 || day>31) || (month < 1 || month>12))
		{
			std::cout << "Not valid date" << std::endl;
		}
		return true;
	}

	static bool isLeapYear(int year)
	{

		return ((year % 4 == 0 && year % 100 != 0) || year % 400);

	}

	static int dayInMonth(int month)
	{
		int days[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
		if (isLeapYear)days[1] = 29;
		return days[month - 1];
	}


};
int main()
{setlocale(LC_ALL, "Russian");

int day=0,month=0, year=0;
cout << endl;
//Функции

cout << "Текущая дата:";
Date d1(2022,5,21);
d1.print();
//Конструкторы,операторы,деструктор
Date date1;
date1.Print1();
cout << endl;
Date date2;
date2.Print1();
cout << endl;
Date date3(2020, 12, 12);
date3.Print1();
cout << endl;
Date date4(2022, 5, 12);
date4.Print1();
cout << endl;
Date date5(date3);
date5.Print1();
cout << endl;
Date New(move(date1));
New.Print1();
cout << endl;
date2 = date4;
date2.Print1();
cout << endl;
date2 = move(date3);
date2.Print1();
cout << endl;
date3.Print1();
cout << endl;

return 0;
	
}

Последний раз редактировалось nonameii3ii; 21.05.2022 в 16:18.
nonameii3ii вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализовать класс для описания календарной даты CDate (дата описывается тремя признаками – число, месяц и год). Kolleper C# (си шарп) 0 07.12.2019 18:45
как решать этот пример на C++: Создать класс Triad (тройка чисел); определить методы увеличения полей на 1. Определить производный класс Date с полями: год, месяц и день... DOSTON Помощь студентам 0 15.02.2017 21:58
c++. Дан массив данных о студентах некоторой группы: фамилия, имя, отчество и дата рождения (день, месяц, год). Вывести фамилии... devials Помощь студентам 3 22.05.2016 23:18
visual studio. [С++] Создать класс Date для работы с датами из целых полей « месяц день» .kbz Помощь студентам 5 06.04.2015 14:58
Создать класс Date для работы с датами в формате «год.месяц.день» (Стандартная задачка для студентов на C#) roomatan C# (си шарп) 1 13.10.2013 08:55