Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
aquarius-a
0 / 0 / 1
Регистрация: 16.04.2011
Сообщений: 48
#1

соединение двух массивов - C++

11.05.2011, 22:33. Просмотров 1278. Ответов 6
Метки нет (Все метки)

здравствуйте!
есть задача: даны два неубывающих массива x и y. найти их соединение, то есть неубывающий массив z, содержащий их общие элементы, причем каждый элемент должен входить в массив z столько раз, сколько он входит в общей сложности в массивах x и y. написал код, вроде бы все правильно, но не работает :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
using namespace std;
 
int main() {
int x[]={1,2,2,4,6,7,7,8,9},y[]={1,1,2,2,5,7,8},z[20];
size_t i,j,k,m,t=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]) {z[t]=x[i];z[t+1]=y[j];t++;}}}
t=sizeof(z)/sizeof(int);
for (i=0;i<t;i++) cout<<z[i]<<" ";
 
getch();
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2011, 22:33
Я подобрал для вас темы с готовыми решениями и ответами на вопрос соединение двух массивов (C++):

Поэлементное соединение двух массивов строк с удалением повторяющихся элементов
Например есть два массива: char A = {&quot;abcdefghi&quot;}; char B = {&quot;ihgfedcba&quot;};...

Создать два массива, которые будут содержать: все четные элементы двух массивов; все нечетные элементы двух массивов
Помогите, пожалуйста, с программой.. Ввести с клавиатуры два одномерных...

Соединение массивов. Не могу сообразить.
Задание таково. Создать шаблон функции, а так же к ней тело проги которое...

Соединение двух строк
Из входного потока читается несколько строк. В первой строке вводится число N...

Для заданных двух графов построить их соединение
добрый день! помогите решить задачу: Соединением графов G1 и G2 называется...

Соединение двух 32 битных блоков в 64 битный и обратно
Есть переменная __unt64 и две переменных unsigned unsigned int. Могу ли я...

6
oinari
5 / 5 / 3
Регистрация: 18.10.2009
Сообщений: 69
11.05.2011, 22:50 #2
Цитата Сообщение от aquarius-a Посмотреть сообщение
t=sizeof(z)/sizeof(int);
ну это первое что бросилось в глаза, размер массива в твоем случае всегда будет равен 20, т.е. эту строчку просто убрать из программы, потому что мы в циклах for уже посчитали количество элементов массива z.
написано правильно, но алгоритм неверный
0
aquarius-a
0 / 0 / 1
Регистрация: 16.04.2011
Сообщений: 48
11.05.2011, 22:56  [ТС] #3
Цитата Сообщение от oinari Посмотреть сообщение
ну это первое что бросилось в глаза, размер массива в твоем случае всегда будет равен 20, т.е. эту строчку просто убрать из программы, потому что мы в циклах for уже посчитали количество элементов массива z.
написано правильно, но алгоритм неверный
а как мне тогда определять массив z, не указывая кол-во элементов? z[] - ошибка. подскажите, в чем ошибка алгоритма?
0
oinari
5 / 5 / 3
Регистрация: 18.10.2009
Сообщений: 69
11.05.2011, 23:10 #4
Цитата Сообщение от aquarius-a Посмотреть сообщение
а как мне тогда определять массив z, не указывая кол-во элементов?
Да все хорошо я просто говорю что строчка t=sizeof(z)/sizeof(int); не нужна, так как размер статического массива, всегда равен количеству выделенной под него памяти.
Ошибка в том, что считает неправильно и выводит такие числа: 1 1 2 2 2 2 7 7 8
0
aquarius-a
0 / 0 / 1
Регистрация: 16.04.2011
Сообщений: 48
11.05.2011, 23:20  [ТС] #5
Цитата Сообщение от oinari Посмотреть сообщение
Да все хорошо я просто говорю что строчка t=sizeof(z)/sizeof(int); не нужна, так как размер статического массива, всегда равен количеству выделенной под него памяти.
Ошибка в том, что считает неправильно и выводит такие числа: 1 1 2 2 2 2 7 7 8
вот то-то и оно...
насчет строчки t=sizeof(z)/sizeof(int) понял.
0
oinari
5 / 5 / 3
Регистрация: 18.10.2009
Сообщений: 69
11.05.2011, 23:59 #6
aquarius-a, надо в цикле брать каждый элемент первого массива, и находить количество равных ему элементов в первом и во втором, потом записывать в массив z, количество записей будет равно количеству найденных элементов и так пока не пройдем все числа.

Добавлено через 24 минуты
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
int _tmain(int argc, _TCHAR* argv[])
{
    int x[]={1,2,2,4,6,7,7,8,9},y[]={1,1,2,2,5,7,8},z[80];
    size_t i=0,j,k,m,t=0,count,step_fa=0,step_sa=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])
            {
                for(int step(i+1);step<k;step++)
                    if(x[i]==x[step]) step_fa++;
                    else break;
                for(int step(j+1);step<m;step++)
                    if(y[j]==y[step]) step_sa++;
                    else break;
                for(count = 0 ; count < step_fa+step_sa+2; count++)
                {
                    z[t] = x[i];
                    t++;
                }
                i+=step_fa+1;
                j+=step_sa;
                step_fa=0,step_sa=0;
            }
        }
    }
    for (i=0;i<t;i++) cout<<z[i]<<" ";
    getch();
    return 0;
}
Держи
screenshot:
1
aquarius-a
0 / 0 / 1
Регистрация: 16.04.2011
Сообщений: 48
12.05.2011, 00:50  [ТС] #7
oinari, спасибо большое
0
12.05.2011, 00:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2011, 00:50
Привет! Вот еще темы с решениями:

Функция Concat: соединение двух последовательностей произвольного типа и размера
Задача в том, чтобы реализовать функцию соединения двух последовательностей...

Объединение двух массивов
Пожалуйста! Дано два впорядкованих за зростанням масиви A(m) та B(n). Отримати...

Объединение двух массивов
Добрый день помогите пожалуйста решыть задачу по програмированнию. Есть два...

Сравнение двух массивов
Добрый день ! В условии задачи сказано, что есть два массива по 10 элементов,...


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

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

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