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

Сравнение значений в классах

14.03.2018, 20:49. Просмотров 312. Ответов 6
Метки нет (Все метки)

Мне нужно сравнивать значение 40 и 30 . Изменить программу нельзя, кроме строк от 40 до 45 , Сравнение значений должна обязательно находится в int main:

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
#include <iostream>
 
template <typename T>
 
class Base{
private:
    T a;
    T b;
public:
    bool x= true;
    bool y= false;
    Base();
    Base(T, T);
    Base operator-(const Base & obj);
    void print();
};
template <typename T>
Base<T>::Base() {
 
}
 
template <typename T>
Base<T>::Base(T a1, T b1): a(a1), b(b1) {}
 
template <typename T>
Base<T> Base<T>:: operator- (const Base<T>& obj) {
    Base object;
    object.a=this->a-obj.a;
    object.b=this->b-obj.b;
    return object;
}
template <typename T>
void Base<T>::print(){
 
}
int main() {
    Base<int> object1(40,70);
    Base<int> object2(30,60);
    Base<int> obj= object1 - object2;
    if(object1.a==object2.a){
        std::cout<<std::boolalpha<<obj.x;
    }
    else {
        std::cout<<std::boolalpha<<obj.y;
    }
    obj.print();
 
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2018, 20:49
Ответы с готовыми решениями:

Возвращение и вывод вычисленных значений в классах
Пишу программу для вычисления корней уравнений и наткнулся на небольшую проблемку. есть класс head...

Перебор и сравнение значений
Добрый день. Столкнулся с проблемой перебора. Есть входные данные и массив с константами. Требуется...

Определить, какие из этих имен встречаются во всех классах, какие есть хотя бы в двух классах, и какие - только в одном классе
Для каждого из четырех классов указаны имена девочек, обучающихся в них. Определить, какие из этих...

Сравнение значений полученных по сети
Прошу помощи объяснить как правильно принимать сообщение из функции recv в цикле ? char...

Сравнение значений одного map в другом
Приветствую всех. Есть два контейнера std::map&lt;int, int&gt;. Необходимо найти одинаковые ключи в этих...

6
SuperKir
456 / 413 / 286
Регистрация: 10.03.2015
Сообщений: 1,768
Завершенные тесты: 1
14.03.2018, 22:48 2
Вы не можете сравнить параметры, находящиеся под модификатором private, вне класса.
Перегрузить оператор сравнения или вынести в public.
1
nd2
3099 / 2593 / 1134
Регистрация: 29.01.2016
Сообщений: 8,690
14.03.2018, 23:41 3
Цитата Сообщение от SuperKir Посмотреть сообщение
Перегрузить оператор сравнения или вынести в public.
Или геттеры сделай.
0
SuperKir
456 / 413 / 286
Регистрация: 10.03.2015
Сообщений: 1,768
Завершенные тесты: 1
15.03.2018, 12:21 4
Цитата Сообщение от nd2 Посмотреть сообщение
Или геттеры сделай.
Да мне вообще интересно, как не изменяя код он(а) хочет сделать
0
Reflevmas
3 / 3 / 3
Регистрация: 06.02.2018
Сообщений: 66
15.03.2018, 19:51  [ТС] 5
SuperKir мне тоже. Всмысле код мне нельзя удалять. От 40 до 45 строк можно, потому что это мое дополнение к коду. А вовсе к коду можно добавить код иначе будет невозможным получить правильное решение моей задачи.
0
nd2
3099 / 2593 / 1134
Регистрация: 29.01.2016
Сообщений: 8,690
15.03.2018, 20:13 6
Цитата Сообщение от Reflevmas Посмотреть сообщение
А вовсе к коду можно добавить код иначе будет невозможным получить правильное решение моей задачи.
Переведи.

Добавлено через 3 минуты
Цитата Сообщение от Reflevmas Посмотреть сообщение
Всмысле код мне нельзя удалять. От 40 до 45 строк можно, ... А вовсе к коду можно добавить код
То есть, в объявление класса можно добавить код?

Добавлено через 8 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
template <typename T>
class Base{
private:
    T a;
    T b;
public:
    bool x= true;
    bool y= false;
    Base();
    Base(T, T);
    Base operator-(const Base & obj);
    void print();
    const T& geta() const
    {return a;}
    const T& getb() const
    {return b;}
};
C++
1
2
3
4
5
6
if(object1.geta() == object2.geta()){
        std::cout<<std::boolalpha<<obj.x;
    }
    else {
        std::cout<<std::boolalpha<<obj.y;
    }
Добавлено через 15 секунд
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
template <typename T>
class Base{
private:
    T a;
    T b;
public:
    bool x= true;
    bool y= false;
    Base();
    Base(T, T);
    Base operator-(const Base & obj);
    void print();
    const T& geta() const
    {return a;}
    const T& getb() const
    {return b;}
};
C++
1
2
3
4
5
6
if(object1.geta() == object2.geta()){
        std::cout<<std::boolalpha<<obj.x;
    }
    else {
        std::cout<<std::boolalpha<<obj.y;
    }
0
Reflevmas
3 / 3 / 3
Регистрация: 06.02.2018
Сообщений: 66
16.03.2018, 11:49  [ТС] 7
Вот этот код я хотел получить. Единственное, что мне не нравится 47 строка, вместо true выводит 1, вместо false ` 0; Как это можно исправить?

C++
1
    std::cout<< x << std::endl;
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
#include <iostream>
 
template <typename T>
 
class Base{
private:
    T a;
    T b;
public:
    bool x= true;
    bool y= false;
    Base();
    Base(T, T);
    Base operator-(const Base & obj);
    Base operator==(const Base & obj);
    void print();
};
template <typename T>
Base<T>::Base() {
 
}
 
template <typename T>
Base<T>::Base(T a1, T b1): a(a1), b(b1) {}
 
template <typename T>
Base<T> Base<T>:: operator- (const Base<T>& obj) {
    Base object;
    object.a=this->a-obj.a;
    object.b=this->b-obj.b;
    return object;
}
template <typename T>
Base<T> Base<T>:: operator== (const Base<T>& obj2) {
    Base object;
    if(object.a==object.b){
        return obj2.x;
    }
    else {
        return obj2.y;
    }
}
template <typename T>
void Base<T>::print(){
    std::cout<< a << " " << b << std::endl;
    if (a==b) {
    std::cout<< x << std::endl;
    }
    else{
    std::cout<< y << std::endl;
    }
}
int main() {
    Base<int> object1(40,700);
    Base<int> object2(30,60);
    Base<int> obj= object1 - object2;
/*  if(object1.a==object2.a){
        std::cout<<std::boolalpha<<obj.x;
    }
    else {
        std::cout<<std::boolalpha<<obj.y;
    }
*/  obj.print();
 
}
0
16.03.2018, 11:49
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2018, 11:49

Сравнение двух массивов и выборка из них не повторяющихся значений
Задание 2 на скриншоте. Я сделал ввод с клавиатуры двух массивов нужно как то остальное сделать...

Три функции (ввод значений элементов массива, вывод, сравнение двух массивов)
Написать программу с тремя функциями: ввод значений элементов массива целых (возможно,значение...

Сравнение текста из файла и сравнение с текстом в программе char - Dev C++
Доброго времени суток! Имеется код программы: ifstream test(&quot;primer.txt&quot;); char awm = &quot;kod&quot;;...


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

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

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