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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2022, 16:20   #1
nonameii3ii
Пользователь
 
Регистрация: 16.04.2021
Сообщений: 73
По умолчанию Нужно сделать функции установки даты и функции, которая добавляет 1 день к текущей дате;

Вот полное задание:Спроектировать класс Date (дата) с полями год, месяц, день. В классе должны быть следующие функции:
1. конструктор по умолчанию;
2. конструктор копирования (copy constructor);
3. конструктор перемещения (move constructor);
4. оператор присваивания (copy assignment);
5. оператор перемещения (move assignment);
6. функция установки даты;
7. функция, которая добавляет 1 день к текущей дате;
8. функция вывода на экран текущей даты;
9. деструктор (destructor).
Написать программу, демонстрирующую работу с созданным классом.
Вот что сделал я,прошу помощи чем быстрее тем лучше
Код:
#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 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти те даты, когда день рождения попадает на тот же день Дюша Метелкин Паскаль, Turbo Pascal, PascalABC.NET 8 23.06.2016 11:16
Текущий день недели в функции webber9989 Общие вопросы по Java, Java SE, Kotlin 2 02.12.2013 20:40
по дате рождения и текущей дате (день, месяц, год) определить сколько дней до дня рождения (код на ПАСКАЛЕ) Николай1 Помощь студентам 1 16.02.2012 09:07
функции даты @mazonk@ Общие вопросы Delphi 6 21.06.2011 09:13