Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ovner
7 / 7 / 0
Регистрация: 06.10.2012
Сообщений: 140
#1

Перезагрузка операций - C++

09.03.2013, 16:07. Просмотров 833. Ответов 5
Метки нет (Все метки)

Всем привет, есть такая задача.
Создать класс - дата с полями в закрытой части: день (1-31), месяц (1-12), год (целое число). Определить необходимые конструкторы, методы доступа, деструктор.
Перегрузить потоковые операции ввода и вывода, операции + (увеличение на n дней) - (разница между двумя датами), < и >=.

Вообщем не знаю как сделать это " Перегрузить потоковые операции ввода и вывода, операции + (увеличение на n дней) - (разница между двумя датами), < и >= " Помогите пожалуйста.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <iostream>
using namespace std;
 
class date
{
private:
    int day, month, year;
public:
    date(){};
    ~date(){};
 
    void change(void);
    void print(void);
    void SetDay(int a);
    void SetMonth(int b);
    void SetYear(int c);
 
   date operator +(date&);
   date operator -(date&);
   date operator <(date&);
   date operator >=(date&);
 
   friend istream& operator >>(istream&,date&);
   friend ostream& operator <<(ostream&,date&);
 
};
 
void date::SetDay(int a)
{
day=a;
}
 
void date::SetMonth(int b)
{
month=b;
}
 
void date::SetYear(int c)
{
year=c;
}
 
void date::change(void)
{
int a,b,c;
 
cout <<"Enter day"<<endl;
cin>>a;
SetDay(a);
 
cout <<"Enter month"<<endl;
cin>>b;
SetMonth(b);
 
cout <<"Enter year"<<endl;
cin>>c;
SetYear(c);
cout<<endl;
 
if((a < 0)|| (a > 31))
    {
        cout << "Error number of the day" << endl;
    }
 
if ((b<0) || (b>12)) 
    {
        cout <<"Error number of the month"<<endl;
    }
}
 
void date::print(void)
{
     if (day>31|| day<0 || month<0 || month>12) return;
    
     else
      {
         cout << day<<'.'<< month <<'.'<< year<<endl;
         cout<<endl;
      }
}
 
date date::operator +(date& y)
{
// код
}
 
date date::operator -(date& y)
{
// код
}
 
 
void main(void)
{   
    date obj;   
    obj.change();
    obj.print();
    getchar();
    getchar();
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2013, 16:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перезагрузка операций (C++):

Перезагрузка операций - C++
Помогите выполнить задание. &quot;Переопределить операцию для класса point таким образом, чтобы применение данной операции к экземпляру...

Перезагрузка операций - C++
Класс String описан следующим образом: #include &lt;string.h&gt; #include &lt;conio.h&gt; #include &lt;iostream.h&gt; #include &lt;stdio.h&gt; class...

Перезагрузка операций С++ - C++
Всем привет! Прошу помощи в решении задания по перезагрузке операций в С++ Само задание: Создать класс Time для работы с...

Перезагрузка операций - C++
Всем привет, проблема в следующем... Нужно решить задачку с книги, перезагрузить оператор '+' так что бы в операции s1= s2+s3; не...

Перезагрузка операций в классах - C++
//Time.h #include &lt;iostream&gt; using namespace std; class Time { int min, sec; public: Time(){min=0;sec=0;}; Time(int m,...

Перезагрузка операций в классе - C++
http://storage9.static.itmages.ru/i/14/1206/s_1417871404_8955640_6c15215a22.jpg Одно из заданий учебника. У меня нет проблем как...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
09.03.2013, 17:26 #2
Цитата Сообщение от ovner Посмотреть сообщение
C++
1
friend ostream& operator <<(ostream&,date&);
компилятор матюгнётся, выводимый объект надо передавать конст
0
The_bolT
70 / 70 / 1
Регистрация: 22.01.2013
Сообщений: 231
09.03.2013, 22:33 #3
C++
1
2
3
4
5
6
7
8
9
10
friend ostream& operator <<(ostream&,const date&);
 
ostream &operator<<(ostream &out,const date &Obj)
{
    out<<"Day: "<<Obj.day<<endl;
    out<<"Month: "<<Obj.month<<endl;
    out<<"Year"<<Obj.year<<endl;
 
    return out;
}
1
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
09.03.2013, 22:45 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ostream& operator <<(ostream& os, const date& dat)
{//вывод в формате YY.MM.DD
      os<<dat.year<<"."
         <<dat.month<<"."
         <<dat.day<<endl;
      return os;
}
 
istream& operator >>(istream& in, date& dat)
{ 
      in>>dat.year;
      in>>dat.month;
      in>>dat.day;
     
      return in;
}
Добавлено через 6 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
date date::operator -(date& y)
{
     date tmp;
     tmp.year = this->year - y.year;
     tmp.month = this->month - y.month;
     tmp.day = this->day - y.day;
 
     return tmp;
}
 
date date::operator +(date& y)
{
     date tmp;
     tmp.year = this->year + y.year;
     tmp.month = this->month + y.month;
     tmp.day = this->day + y.day;
 //нужно добавить проверку того что если складываются 
//допустим 20 - е числа, то день будет скажем 10 - ый, а месяц увеличится
//ну вы меня поняли  
     return tmp;
}
1
ovner
7 / 7 / 0
Регистрация: 06.10.2012
Сообщений: 140
10.03.2013, 22:49  [ТС] #5
спасибо
а как это реализовать < и >=

Добавлено через 23 часа 3 минуты
апну
а как это реализовать < и >=
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.03.2013, 10:27 #6
Цитата Сообщение от ovner Посмотреть сообщение
а как это реализовать < и >=
Так же:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
bool operator <(date&);
bool operator >=(date&);
 
bool date::operator<(date& y)
{
     if(year > y.year) return false;
     if(year < y.year) return true;
     if(month > month) return false;
     if(month < month) return true;
     if(day > day) return false;
     if(day < day) return true;
     return false;
}
 
bool date::operator>=(date& y)
{
     if (*this < y) return false;
     if(year  == y.year && 
        month == month  &&
        day   == day       ) return true;
    return true;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2013, 10:27
Привет! Вот еще темы с ответами:

Вставить между цифрами 1, 2,..., 8, 9 в данном порядке, знак одной из 4-х арифметических операций так, чтобы результат восьми послед-х операций =100 - C++
Вычисления проводятся слева-направо, ни одна операция не имеет приоритета. Добавлено через 2 минуты задача вынесла моск, прошу помочь

Перезагрузка операций и функции в С++ - C++
у меня есть лаба по перезагрузке. Строка символов. Реализовать операции: сравнение строк (операция = =); удаления из строки...

Перезагрузка - C++
Здравствуйте! Получил вот такую лабу по перезагрузке. Класс: Множество целых чисел. Поля: Количество элементов в множестве, указатель...

перезагрузка >> - C++
Учусь по книге Дейтела. Дошел до перезагрузки &gt;&gt; и &lt;&lt;. И мне интересно зачем в этом примере ignore(); Может кто-то объяснить зачем он в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.03.2013, 10:27
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru