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

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

Восстановить пароль Регистрация
 
razum777
0 / 0 / 0
Регистрация: 15.12.2009
Сообщений: 46
04.06.2013, 14:32     Перегрузка операции #1
Добрый день, Друзья!
Столкнулся с такой проблемой, необходимо сравнить 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++ Перегрузка операции =
Перегрузка операции C++
C++ Перегрузка операции
Перегрузка операции + C++
Перегрузка операции C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,163
Завершенные тесты: 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,163
Завершенные тесты: 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,163
Завершенные тесты: 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     Перегрузка операции
Ответ Создать тему
Опции темы

Текущее время: 05:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru