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

Сравнить два массива, заданных классами - C++

Восстановить пароль Регистрация
 
skiff.
6 / 6 / 2
Регистрация: 10.09.2011
Сообщений: 87
10.01.2013, 20:50     Сравнить два массива, заданных классами #1
Имеется class array и class array2. В них описаны массивы. И два метода, заполняющие их.
Нужно сравнить два этих массива (Вывести одинаковые элементы)
В силу неопытности, не могу разобраться как сравнить их. Помогите разобраться пожалуйста.
А ещё надо разработать метод слияния этих массивов(но без решения предыдущей задачи, я не справлюсь )

Пытался как-то так, но не получилось:
C++
1
2
3
4
5
6
7
void array::srav() //метод сравнения массивов
{ for (int i=0; i<number; i++)
{
for (int j=0; j<number2; j++)
{   if arr[i] == arr2[j] 
    cout << arr[i] << " ";
}}}
Вот класс второго массива(первый аналогично):
C++
1
2
3
4
5
6
7
8
9
10
class array2
{
public:
    array2(int number2);
    void print2();
    void srav();
private:
    int number2;
    int *arr2;
};
Заполнение второго массива:
C++
1
2
3
4
5
6
7
array2::array2(int Number2)
{ if( Number2 > 0 ) number2 = Number2;
   else throw -1;
   arr2 = new int[number2]; 
   for (int i=0; i<number2; i++)
   cin >> arr2[i];
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Поночка
4 / 4 / 0
Регистрация: 04.10.2009
Сообщений: 22
11.01.2013, 00:13     Сравнить два массива, заданных классами #2
Цитата Сообщение от skiff. Посмотреть сообщение
(Вывести одинаковые элементы)
Если понимать под одинкавыми элементами стоящие на тех же местах и равные друг другу, то нужно организовать ОДИН цикл по МЕНЬШЕМУ массиву, и там обращаться к элементам, стоящим на одном месте и сравнивать их между собой...

Мне так, кажется....
skiff.
6 / 6 / 2
Регистрация: 10.09.2011
Сообщений: 87
11.01.2013, 12:50  [ТС]     Сравнить два массива, заданных классами #3
Ну примерно то понятно конечно. Меня интересует как организовать вообще этот метод. В каком из классов объявлять его. Собственно интересует наглядный пример или решение.
xADMIRALx
 Аватар для xADMIRALx
66 / 60 / 1
Регистрация: 09.06.2012
Сообщений: 291
11.01.2013, 13:38     Сравнить два массива, заданных классами #4
skiff., вообщем вот код,если что заходите измените
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
class array {
private:
    int *boom;
    size_t size,location;
 
public:
    array(size_t sizeA) {
        size = sizeA;
        location = 0;
        boom = new int[size];
    }
    ~array() {
        delete[] boom;
    }
 
    void srav(const array &arr) {
        size_t i,j;
        for (i = 0; i < size;++i)
            for (j = 0;j < arr.size;++j)
            {
                if (boom[i] == arr.boom[j]) {
                    cout << "Элемент boom[" << i << "] совпадает с " << "arr[" << j << "] значением : " << arr.boom[j] << "\n";
                }
            }
    }
 
    void insert(int x) {
        boom[location++] = x;
    }
 
 
};
 
int main(void) {
    setlocale(LC_ALL,".1251");
    array s(30),a(30);
    int i;
    
    for (i = 0;i < 30;++i) {
        s.insert(i);
        a.insert(i);
    }
 
    s.srav(a);
 
return 0;
}
Логика очень проста,есть класс,у него имеются 3 приватных переменных,2 метода,конструктор и деструктор.

в момент инициализация конструктора,присваиваем размеру массива размер location нулю,location это переменная для insert,что бы знать куда в следующий раз добавлять переменную в массив.

метод insert довольно таки проста.

метод srav,тоже

в данном случаи у нас srav метод класса,по этому к boom-у мы имеет доступ не явный.

создаем 2 цикла,берем из boom его длину, элементы,то же делаем и с arr.boom,и сравниваем наши boom и arr.boom,в данном случии у нас получается что мы проходим по всем элементам arr.boom,благодаря двойному циклу

Надеюсь хоть чуть-чуть было понятно
skiff.
6 / 6 / 2
Регистрация: 10.09.2011
Сообщений: 87
11.01.2013, 14:00  [ТС]     Сравнить два массива, заданных классами #5
xADMIRALx, что-то я не понял как второй массив тут появляется )) arr.boom который
xADMIRALx
 Аватар для xADMIRALx
66 / 60 / 1
Регистрация: 09.06.2012
Сообщений: 291
11.01.2013, 14:11     Сравнить два массива, заданных классами #6
skiff., что именно не понял?
C++
1
2
3
4
5
6
7
в классе {
void srav(const array &arr)
}
в майне {
array s(30),a(30);//объявили
s.srav(a);//вот тут передаем a,srav получает(arr);
}
skiff.
6 / 6 / 2
Регистрация: 10.09.2011
Сообщений: 87
11.01.2013, 14:22  [ТС]     Сравнить два массива, заданных классами #7
а заполняются они в методе insert чтоли? Просто я не вижу cin
xADMIRALx
 Аватар для xADMIRALx
66 / 60 / 1
Регистрация: 09.06.2012
Сообщений: 291
11.01.2013, 14:27     Сравнить два массива, заданных классами #8
skiff.,

Не по теме:

хехе,оказывается,всё гораздо глубже


заполняется они в цикле,который вызывает метод insert,и передает int-овский аргумент...

можете сделать что бы у вас считывалось с клавиаторы тобишь cin,надеюсь сами сделаете...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2013, 15:33     Сравнить два массива, заданных классами
Еще ссылки по теме:

C++ Найти среднее арифметическое элементов массива, сравнить два массива поэлементно
C++ Сравнить поэлементно два одномерных массива, и через if определить, равны эти элементы или нет
C++ Как сравнить два элемента массива типа string?

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

Или воспользуйтесь поиском по форуму:
skiff.
6 / 6 / 2
Регистрация: 10.09.2011
Сообщений: 87
11.01.2013, 15:33  [ТС]     Сравнить два массива, заданных классами #9
Цитата Сообщение от xADMIRALx Посмотреть сообщение
skiff.,

Не по теме:

хехе,оказывается,всё гораздо глубже


заполняется они в цикле,который вызывает метод insert,и передает int-овский аргумент...

можете сделать что бы у вас считывалось с клавиаторы тобишь cin,надеюсь сами сделаете...
А, ну он цифрами от 1 до 29 заполняет. Просто ненаглядно, вот и не понял))

Добавлено через 51 минуту
Ну в любом случае не получается ваш вариант подцепить к себе =( Мне всё таки надо использовать два отдельных класса.
Может как-то через дружественную функцию соединить два массива?
Yandex
Объявления
11.01.2013, 15:33     Сравнить два массива, заданных классами
Ответ Создать тему
Опции темы

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