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

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

Войти
Регистрация
Восстановить пароль
 
razum777
0 / 0 / 0
Регистрация: 15.12.2009
Сообщений: 46
#1

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

04.06.2013, 14:32. Просмотров 283. Ответов 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");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2013, 14:32     Перегрузка операции
Посмотрите здесь:

Перегрузка операции = - C++
Здравствуйте, в программе вылезает такая ошибка MainUnit.cpp(86): E2034 Cannot convert 'string' to 'UnicodeString' в связи с этим...

Перегрузка операции = - C++
Подскажите пожалуйста как для шаблонной функции перегрузить = есть не сложно то на примере!!

Перегрузка операции >> - C++
Здравствуйте. Возник такой вопрос: возможни ли перегрузить оператор &gt;&gt; так, чтобы пользователь мог вводить с клавиатуры время в формату...

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

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

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

Перегрузка операции [] - C++
Добрый день. Столкнулся с недопониманием, странной ошибкой. #include &lt;iostream&gt; #include &quot;windows.h&quot; class Array { int...

Перегрузка операции >> - C++
Всем привет! Суть: есть класс, есть объект, есть перегруженная операция &gt;&gt; для ввода полей объекта. Есть приватный метод, который...

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

Перегрузка операции + - C++
Всем привет! Ребята, обясните, пжлста, почему конструктор вызывается дважды. Rational integer1( c, d ),h;// инициализация h ( здесь...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,165
Завершенные тесты: 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;
}
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?
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,165
Завершенные тесты: 2
04.06.2013, 14:48     Перегрузка операции #4
у тебя передается в оператор ссылка на объект потока istream, из потока же и извлекаются in>>p1.first и in>>p1.second
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 раза, а если будет больше вводов?
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,165
Завершенные тесты: 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);
}
Yandex
Объявления
04.06.2013, 15:18     Перегрузка операции
Ответ Создать тему
Опции темы

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