|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.06.2010, 18:34 | #1 |
Новичок
Джуниор
Регистрация: 21.01.2010
Сообщений: 1
|
Перегрузка операторов(С++)
Здравствуйте,помогите пожалуйста с перегрузкой операторов в С++
Использовал раздельную компиляцию,но не могу для перегрузки нужный алгоритм придумать =( Без перегрузки программа работает =(( Два оператора: 1)!= бинарный дружественный оператор разница между двумя датами 2)- унарный оператор класса отнять текущую дату main.cpp #include <stdio.h> #include <conio.h> #include <windows.h> #include "CDateSubMonths.h" int main(){ int bmonth=0; char buf[32]; CDateSubMonths date_add_month_1; CDateSubMonths date_add_month_2; SetConsoleOutputCP(1251); SetConsoleCP(1251); printf("Введите дату:"); scanf("%s",buf); printf("Введите кол-во месяцев: "); scanf("%d",&bmonth); if(!date_add_month_1.SetDateString( buf)){ printf("Данные введены неверно!"); return -1; } date_add_month_1.SubMonths(bmonth); date_add_month_1.GetDateString(buf) ; printf(buf); printf("\nВведите текущую дату: "); scanf("%s",buf); date_add_month_2.GetDateString(buf) ; date_add_month_2.GetNow(buf); printf("\nРазница между датами составила: "); printf(buf); getch(); return 0; } CDateSubMonths.cpp #include "CDateSubMonths.h" #include <stdio.h> int isLeapYear(int y) { return (y%4==0)&&(y%100!=0)||(y%400==0); } // Constructor CDateSubMonths::CDateSubMonths() { date_y=0; date_m=0; date_d=0; res_date_y=0; res_date_m=0; res_date_d=0; m_month_days[0]=31; m_month_days[1]=28; m_month_days[2]=31; m_month_days[3]=30; m_month_days[4]=31; m_month_days[5]=30; m_month_days[6]=30; m_month_days[7]=31; m_month_days[8]=30; m_month_days[9]=31; m_month_days[10]=30; m_month_days[11]=31; } // Destructor CDateSubMonths::~CDateSubMonths() { // echo /dev/brain >> /dev/null } // Установка int CDateSubMonths::SetDateString(char *buf) { int year, month,day; sscanf(buf,"%04d-%02d-%02d",&year,&month,&day); return SetYear(year)&&SetMonth(month)&&Set Day(day); } int CDateSubMonths::SetDay(int day) { if(day>=1 && day<=m_month_days[date_m-1]) { date_d=day; return 1; }else return 0; } int CDateSubMonths::SetMonth(int month) { if(month>=1 && month<=12){ date_m=month; return 1; }else return 0; } int CDateSubMonths::SetYear (int year) { if(year>=1 && year<=9999) { date_y=year; return 1; }else return 0; } void CDateSubMonths::SubMonths(int month){ int t_date_y=date_y,t_date_m=date_m,t_d ate_d=date_d; t_date_m--; for (int i=0;i<month;i++){ for (int j=0;j<31;j++){ t_date_d--; if (t_date_d==0){ t_date_m--; if (t_date_m==-1){ t_date_y--; t_date_m=11; } t_date_d=m_month_days[t_date_m]; } } } res_date_y=t_date_y; res_date_m=t_date_m+1; res_date_d=t_date_d; } int now_y=0; int now_m=0; int now_d=0; void CDateSubMonths::GetDateString(char* buf){ sprintf(buf,"%04d-%02d-%02d",res_date_y,res_date_m,res_dat e_d); } void GetDateNow(char*buf){ sprintf(buf,"%04d-%02d-%02d",now_y,now_m,now_d); } /* int res_now_y=0; int res_now_m=0; int res_now_d=0;*/ int CDateSubMonths:perator -(int yy,mm,dd){ int res_now_y=yy; int res_now_m=mm; int res_now_d=dd; if(dd>=1 && dd<=now_d) { now_d-=dd; }else date_m--; return 0; } void CDateSubMonths::GetNow(char*buf){ sprintf(buf,"%04d-%02d-%02d",res_now_y,res_now_m,res_now_d ); } CDateSubMonths.h class CDateSubMonths { int date_y,date_m,date_d; int res_date_y,res_date_m,res_date_d; int m_month_days[12]; int now_y,now_m,now_d; int res_now_y,res_now_m,res_now_d; public: CDateSubMonths(); ~CDateSubMonths(); int SetDateString(char *buf); int SetYear(int year); int SetMonth(int month); int SetDay(int day); void SubMonths(int month); void GetDateString(char*); void GetDateNow(char*); void GetNow(char*); int operator-(yy,mm.dd); }; |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перегрузка операторов | raspberry | Общие вопросы C/C++ | 2 | 06.04.2010 00:19 |
Перегрузка операторов. | Macb3th | Общие вопросы C/C++ | 5 | 01.04.2010 21:14 |
Перегрузка операторов (С++) | Перчитель | Помощь студентам | 1 | 03.12.2008 18:46 |
Перегрузка операторов, Организация перегрузки операторов | chagin_yav | Помощь студентам | 2 | 12.05.2008 09:15 |