Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
razum777
0 / 0 / 0
Регистрация: 15.12.2009
Сообщений: 46
#1

Перегрузка операции

04.06.2013, 14:32. Просмотров 320. Ответов 5
Метки нет (Все метки)

Добрый день, Друзья!
Столкнулся с такой проблемой, необходимо сравнить 2 пары чисел, вводимых с клавиатуры:
Я перегрузил операцию ввода и вывода, теперь надо сравнить, в условиях задачи написано, что p1(пара 1) больше p2(2ой пары), если (p1.first>p2.first)||(p1.first==p2.first&&p1.second>p2.second). Есть вопрос как ввести p1.first(second) и p2.first(second. Ниже код:
Pair.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#pragma once
#include <iostream>
 
using namespace std;
 
class Pair
{ int first;
int second;
int s;
public:
    Pair(void);
    ~Pair(void);
    friend istream&operator>>(istream&in, Pair&p1);
    friend ostream&operator<<(ostream&out, const Pair&p1);
};
Pair.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "Pair.h"
 
 
Pair::Pair(void)
{
}
 
 
Pair::~Pair(void)
{
}
 
istream&operator>>(istream&in, Pair&p1)
{   cout<<"1ое число из пары"; cin>>p1.first;
cout<<"2ое число из пары"; cin>>p1.second;
return in;
}
ostream&operator<<(ostream&out, const Pair&p1)
{ out<<p1.first<<" "<<p1.second;
return out;
}
14lab4v2main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include "Pair.h"
 
void main()
{setlocale(LC_ALL, "Russian");  
Pair a;
Pair b;
cin>>a;
cin>>b;
cout<<a;
cout<<b;
cout<<"\n";
system("PAUSE");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2013, 14:32
Ответы с готовыми решениями:

Перегрузка операции %
Как перегрузить операцию % в с++?

Перегрузка операции
Всем привет! Помогите сделать пожалуйста задание, а то совсем я не понимаю его...

Перегрузка операции >>
Здравствуйте. Возник такой вопрос: возможни ли перегрузить оператор &gt;&gt; так,...

Перегрузка операции
Здравствуйте! Нужно перегрузить операцию &lt;&lt; для вставки полей объекта класса в...

Перегрузка операции ~
Задача: Перегрузить операцию ~ (унарная операция) так, чтобы она изменяла знак...

5
Кудаив
410 / 409 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
04.06.2013, 14:39 #2
C++
1
2
3
4
5
istream&operator>>(istream&in, Pair&p1)
{   cout<<"1ое число из пары"; in>>p1.first;
cout<<"2ое число из пары"; in>>p1.second;
return in;
}
0
razum777
0 / 0 / 0
Регистрация: 15.12.2009
Сообщений: 46
04.06.2013, 14:45  [ТС] #3
Цитата Сообщение от Кудаив Посмотреть сообщение
C++
1
2
3
4
5
istream&operator>>(istream&in, Pair&p1)
{   cout<<"1ое число из пары"; in>>p1.first;
cout<<"2ое число из пары"; in>>p1.second;
return in;
}
А откуда тогда появится p2.first и p2.second?
0
Кудаив
410 / 409 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
04.06.2013, 14:48 #4
у тебя передается в оператор ссылка на объект потока istream, из потока же и извлекаются in>>p1.first и in>>p1.second
0
razum777
0 / 0 / 0
Регистрация: 15.12.2009
Сообщений: 46
04.06.2013, 15:07  [ТС] #5
Цитата Сообщение от Кудаив Посмотреть сообщение
у тебя передается в оператор ссылка на объект потока istream, из потока же и извлекаются in>>p1.first и in>>p1.second
В общем, сделал так:
Time.cpp

C++
1
2
3
4
5
6
Pair Pair::operator||(const Pair&p1)
{ if ((first>p1.first)||(first==p1.first&&second>p1.second))
cout<<"\np1 больше";
else cout<<"\np2 больше";
return p1;
}
Как можно все таки по другому? потому что здесь всего 2 раза, а если будет больше вводов?
0
Кудаив
410 / 409 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
04.06.2013, 15:18 #6
что ты делаешь? если нужно сравнить только на равенство то хватит перегруженного ==
если мало - перегрузи другие логические операторы
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
#pragma once
#include <iostream>
 
using namespace std;
 
class Pair
{ 
int first;
int second;
int s;
public:
    Pair(void);
    ~Pair(void);
     
    bool operator==(const Pair& rhs);
   
    friend istream&operator>>(istream&in, Pair&p1);
    friend ostream&operator<<(ostream&out, const Pair&p1);
};
 
bool Pair::operator==(const Pair& rhs)
{
    return (first == p.first) && (second == p.second);
}
1
04.06.2013, 15:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2013, 15:18

Перегрузка операции
Здравствуйте, можете пожалуйста помочь с кодом на перегрузку операции: + −...

Перегрузка операции +
Всем привет! Ребята, обясните, пжлста, почему конструктор вызывается дважды....

Перегрузка операции
Никак не могу понять как перегрузить оператор. Кучу примеров пересмотрел, но...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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