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

Общие элементы в массивах - C++

Восстановить пароль Регистрация
 
aquarius-a
0 / 0 / 0
Регистрация: 16.04.2011
Сообщений: 48
11.05.2011, 22:04     Общие элементы в массивах #1
Здравствуйте.
Задача: есть два возрастающих массива длиной k и m. нужно найти общие элементы и разместить их в массиве t. Вот мой код, но он работает некорректно при выводе элементов массива на экран, не могу понять где ошибка (код скопировал из Билдера, если кто подскажет как его отображать с тегами буду благодарен).

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
using namespace std;
 
int x[]={1,3,6,8,9},y[]={2,3,4,6,9},t[10];
size_t i,j,k,m,z=0;
k=sizeof(x)/sizeof(int),m=sizeof(y)/sizeof(int);
for (i=0;i<k;i++)
  {for (j=0;j<m;j++)
   {if (x[i]==y[j]) {t[z]=x[i];z++; break;}}}
z=sizeof(t)/sizeof(int);
for (i=0;i<z;i++) cout<<t[i]<<" ";
 
getch();
return 0;
}
 Комментарий модератора 
Используйте теги форматирования кода!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rtut
6 / 6 / 0
Регистрация: 11.05.2011
Сообщений: 28
11.05.2011, 22:08     Общие элементы в массивах #2
Нужно при создании своего сообщения нажать на кнопку "C++", далее поместить свой код внутрь пары тегов. (CPP) <here> (/CPP)
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
11.05.2011, 23:48     Общие элементы в массивах #3
aquarius-a,
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
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
    srand(time(NULL));
    const int M=10,N=8;
    int k=0,count=0;;
    int arr[M],arr1[N],arr2[M>N ? M : N];
    cout<<"Array_1 -> ";
     for(int i=0; i<M; i++)
     {
         arr[i]=rand()%10;
         cout<<arr[i]<<" ";
     }
    cout<<endl;
    cout<<"Array_2 -> ";
     for(int i=0; i<N; i++)
     {
         arr1[i]=rand()%10;
         cout<<arr1[i]<<" ";
     }
    cout<<endl<<"Rasult -> ";
    for(int i=0; i<M; i++)
    {
        for(int j=0; j<N; j++)
        {
            if(arr[i]==arr1[j])
            {
                for(int l=0; l<k; l++)
                {
                    if(arr2[l]==arr[i])
                    {
                        count++;
                    }
                }
                if(!count)
                {
                  arr2[k]=arr[i];
                  cout<<arr2[k]<<" ";
                  k++;
                  count=0;
                }
                break;
            }
        }
    }
    cout<<endl;
    system("pause");
    return 0;
}
aquarius-a
0 / 0 / 0
Регистрация: 16.04.2011
Сообщений: 48
12.05.2011, 00:09  [ТС]     Общие элементы в массивах #4
уже разобрался. почему-то строка z=sizeof(t)/sizeof(int); не давала корректно работать программе, хотя мне кажется ничего такого быть не должно, я всего лишь вычислил размер массива.

Добавлено через 20 минут
MILAN, спасибо за код. скажите, а что означает запись
Цитата Сообщение от MILAN Посмотреть сообщение
arr2[M>N ? M : N];
и еще мне не совсем понятна конструкция:
Цитата Сообщение от MILAN Посмотреть сообщение
for(int l=0; l<k; l++)
{
if(arr2[l]==arr[i])
{
count++;
}
}
if(!count)
{
arr2[k]=arr[i];
cout<<arr2[k]<<" ";
k++;
count=0;
как вы делаете цикл от l=0 до l=k если в самом начале вы присвоили к=0; и не могу понять что вы делаете этим:

Цитата Сообщение от MILAN Посмотреть сообщение
for(int l=0; l<k; l++)
{
if(arr2[l]==arr[i])
{
count++;
}
}
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
12.05.2011, 00:19     Общие элементы в массивах #5
Цитата Сообщение от aquarius-a Посмотреть сообщение
M>N ? M : N
Тернарная операция(размер массива общих елементов будет равен размеру большого из двух масивов )

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
 for(int i=0; i<M; i++) // берем цикл, который пробегает по первому массиву
    {
        for(int j=0; j<N; j++) // цикл, который пробегает по елементам второго массива 
        {
            if(arr[i]==arr1[j]) // сравниваем по очереди елементы из первого массива с елементами со второво массива, если они равны
            {
                for(int l=0; l<k; l++) // в етом цикле пробегаем по елементам массива-результата,и смотрим
                {
                    if(arr2[l]==arr[i]) // если такие елементы в массиве результате есть
                    {
                        count++; // увеличеваем счетчик
                    }
                }
                if(!count) // если счетчик 0
                {
                  arr2[k]=arr[i]; // записываем елемент в массив результата 
                  cout<<arr2[k]<<" "; // выводи его на екран
                  k++; // увеличиваем счетчик индексации массива результата
                  count=0; // сбрасываем счетчик  
                }
                break;
            }
        }
    }
Блин, немного набыдлокодил!!!
Yandex
Объявления
12.05.2011, 00:19     Общие элементы в массивах
Ответ Создать тему
Опции темы

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