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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
skiff.
6 / 6 / 2
Регистрация: 10.09.2011
Сообщений: 87
#1

Перегрузка оператора сравнения (==) для массивов - C++

18.01.2013, 17:42. Просмотров 1240. Ответов 7
Метки нет (Все метки)

Имеется класс-массив. Нужно сравнить два массива при помощи перегрузки оператора (==)
Помогите написать пожалуйста!!!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class array
{
    double sum;
    int tmp;
public:
        array(int number);
        ~array();
        void print();
    array operator==(*arr& array2);
private:
        int *arr;
        int number;
};
 
array::array(int Number)      // Заполнение массива 
{
   if( Number > 0 ) 
   number = Number;
   else throw -1;
   arr = new int[number]; 
   for (int i=0; i<number; i++)
   cin >> arr[i];
}
Это я так пытался сравнить, но там впринципе всё не правильно наверное.
Я не знаю как выделить элементы для второго массива, чтобы их сравнить
C++
1
2
3
4
5
6
7
8
9
10
array array::operator==(array& array2)
{
    for (int i=0; i < number; i++)
        a=array.array(i);
        b=array2.array(i);
        if (a == b) return true
        else return false;
 
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2013, 17:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка оператора сравнения (==) для массивов (C++):

Перегрузка оператора сравнения для строк - C++
В общем мне нужно сделать такую перегрузку, что бы вместо символа, например, &quot;&lt;&quot; выполнялось сравнение через strcmp, например строка...

Перегрузка оператора сравнения для указателя на объект - C++
Имеется класс такого плана: template &lt;class T&gt; class Node{ private: T data; //other stuff }; Внутри класса перегружены...

Перегрузка оператора + для объединения массивов - C++
Здравствуйте! Мной был написан код, в котором создаётся класс и заполняются массивы. Для объединения бы использован третий массив с заранее...

Перегрузка оператора сравнения - C++
Перегрузка: bool Zakaz::operator==(Zakaz&amp;B) { if(strcmp(Familia_Zak,B.Familia_Zak)==0 &amp;&amp; Street ==B.Street &amp;&amp; Dom == B.Dom &amp;&amp; Kv ==...

Перегрузка оператора сравнения - C++
Скажите, как перегрузить оператор сравнения == и другие? попробовал bool operator == (char* A,char* B) выдает : оператору ,не являющемуся...

Перегрузка оператора сравнения - C++
Посмотрите, пжл, правилен ли синтаксис перегрузки оператора сравнения для двух строк: #include &lt;cstdio&gt; class base { public: ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
UserAK
73 / 73 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
18.01.2013, 17:49 #2
определение будет выглядеть как-то так
C++
1
bool operator==(const array *array2) const;
Добавлено через 51 секунду
или
C++
1
bool operator==(const array &array2) const;
если по ссылке
MrGluck
Модератор
Эксперт CЭксперт С++
7210 / 4376 / 638
Регистрация: 29.11.2010
Сообщений: 11,887
18.01.2013, 17:52 #3
я б для начала проверял размеры и лишь потом элементы.
UserAK
73 / 73 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
18.01.2013, 17:52 #4
а функция должна сперва сравнить размеры массивов и вернуть false если они не равны,
а если размеры одинаковые, то в цикле сравнить поэлементно и если встретятся разные элементы,
тут же return false;
а если уж цикл сам по себе завершится, тогда return true;
skiff.
6 / 6 / 2
Регистрация: 10.09.2011
Сообщений: 87
18.01.2013, 17:54  [ТС] #5
UserAK, а как теперь само определение написать?
Интересует конкретно сравнение поэлементно
UserAK
73 / 73 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
18.01.2013, 18:01 #6
C++
1
2
3
4
5
6
7
8
bool array::operator==(const array &array2) const
{
    if( number != array2.number ) return false;
    for (int i=0; i < number; i++){
        if ( arr[i] != array2.arr[i] ) return false;
    }
    return true;
}
skiff.
6 / 6 / 2
Регистрация: 10.09.2011
Сообщений: 87
18.01.2013, 18:14  [ТС] #7
UserAK, всё работает! спасибо большое!
UserAK
73 / 73 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
18.01.2013, 18:16 #8
да ещё чуть не забыл
C++
1
if( &array2 == this ) return true; // если сравнивается сам с собой
Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
bool array::operator==(const array &array2) const
{
    if( &array2 == this ) return true; // если сравнивается сам с собой
    if( number != array2.number ) return false;
    for (int i=0; i < number; i++){
        if ( arr[i] != array2.arr[i] ) return false;
    }
    return true;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2013, 18:16
Привет! Вот еще темы с ответами:

Перегрузка оператора сравнения и сортировка - C++
Имеется класс строка на основе vector&lt;char&gt;. У меня не получается перегрузить оператор сравнения. И потом с помощью vector создать массив...

Перегрузка оператора сравнения (сравнивать только по одному полю) - C++
Помогите пожалуйста. совсем не выходит перегрузить оператор == класса Book так, чтобы сравнение велось только переменой isbn класса ISBN. ...

Перегрузка оператора сложения. (Сложение массивов) - C++
Задание целиком: /* Создать класс Динамический массив. Класс должен содержать • конструкторы (по количеству элементов, по...

Перегрузка оператора + (объединение одномерных массивов) - C++
Доброго времени суток. Написала программку по заданию, но к сожалению возникает ошибка error C2955: 'Array' : use of class template...


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

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

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