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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2012, 12:16   #1
Arrioh
Пользователь
 
Регистрация: 25.03.2012
Сообщений: 60
Печаль Перегрузка инкремента для даты. С++

Здравствуйте. Помогите перегрузить постфиксный инкремент, который увеличивает дату на 1 день возвращая копию старого значения. Префиксный инкремент я реализовал. Так:
Цитата:
Date& operator ++ (Date& date)
{
if (date.mm == DEC && date.dd == 31)
{
date.yyyy++;
date.mm = JAN;
date.dd = 01;
}

else if ((date.mm == 1 || date.mm == 3 || date.mm == 5 || date.mm == 5 ||
date.mm == 7 || date.mm == 8 || date.mm == 10 || date.mm == 12) && date.dd == 31
|| date.dd == 30)
{
int month = (int)date.mm;
month++;
(Month)date.mm;
date.dd = 01;
}
else
{
date.dd++;
}

return date;
}
Arrioh вне форума Ответить с цитированием
Старый 03.05.2012, 16:47   #2
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Было бы неплохо увидеть описание всего класса...
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 03.05.2012, 17:13   #3
halcyon
crafter
Форумчанин
 
Аватар для halcyon
 
Регистрация: 03.09.2011
Сообщений: 127
По умолчанию

Код:
class Data
	{
		int year;
		int month;
		int day;
		public:
			Data(): year(1980), month(1), day(1) {}
			Data(int y, int m, int d): year(y), month(m), day(d) {}
			Data operator++(int);
			void showd() const
				{
					cout<<"year: "<<year<<", month: "<<month<<", day: "<<day<<endl;
				}
	};

Data Data::operator++(int)
	{
		return Data(year, month, day++);
	};
int main()
	{
		Data dt(1, 1, 1), res;
		dt.showd();
		res = dt++;
		dt.showd();
		res.showd();

                return 0;
         }
halcyon вне форума Ответить с цитированием
Старый 03.05.2012, 17:37   #4
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Угу.
Только было бы неплохо реализовать проверку на корректность получаемой даты...
В том числе и на високосность года.
А иначе получим 32-е марта...
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 03.05.2012, 17:47   #5
halcyon
crafter
Форумчанин
 
Аватар для halcyon
 
Регистрация: 03.09.2011
Сообщений: 127
По умолчанию

Цитата:
Сообщение от Mandrivnyk Посмотреть сообщение
Угу.
Только было бы неплохо реализовать проверку на корректность получаемой даты...
В том числе и на високосность года.
А иначе получим 32-е марта...
Думаю, эти детали автор сможет добавить сам.
halcyon вне форума Ответить с цитированием
Старый 04.05.2012, 13:06   #6
Arrioh
Пользователь
 
Регистрация: 25.03.2012
Сообщений: 60
По умолчанию

О высокосном году - сделаю. Спс. Но есть одно "но" - я еще не знаком с ООП. Это только предстоит. Класс "дата" пока что, собственно, и не класс, а просто структура с набором функций, которые я сам и создаю. И эти функции включают в себя инкременты для даты. постфиксный инкремент нужно прописать самому... вопрос -как?

Последний раз редактировалось Arrioh; 04.05.2012 в 15:02.
Arrioh вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перегрузка оператора инкремента applegrub Общие вопросы C/C++ 12 21.12.2011 00:02
Чудеса инкремента Русtam PHP 2 27.11.2011 17:12
получение id инкремента mrgrudge PHP 1 25.02.2011 11:41
Перегрузка операций для класса дробей Fataller Общие вопросы C/C++ 4 29.05.2010 18:08