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

Слияние массивов - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
elka
1 / 1 / 0
Регистрация: 31.03.2012
Сообщений: 38
03.04.2012, 23:17     Слияние массивов #1
Задан массив A из N элементов и массив B из M элементов. Сформировать массив L из массивов A и B путем их слияния так, чтобы сначала располагались все элементы массива A, а затем все элементы массива B. Значения N и M ввести с клавиатуры, а массивы A и B сформировать из случайных чисел в диапазоне от 0 до 100.
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
#include <iostream.h>
#include <string.h>
int main()
{
int i;
int n,m;
int *a,*b,*c;
cout<<"Vvedite razmer  1 massiv";
cin>>n;
a= new int[n];
int *p=a;
cout<<"Vvedite massiv 1";
for (;p<a+n;p++)
{
cin>>*p;
}
cout<<endl;
cout<<"Vvedite razmer   massiv";
cin>>m;
b=new int[m];
int *j=b;
cout<<"Vvedite massiv 2";
for (;j<b+m;j++)
{
cin>>*j;
}
cout<<endl;
int x=n+m;
c=new int[x];
int *h=c;
for (;h<c+n;h++)
{
*h=*p;
}
for (*h=n;h<c+x;h++)
{
*h=*(b+n-1);
}
for (;h<c+x;h++)
{
cout<<*h<<" ";
}
cin.get();
cin.get();
}
Добавлено через 39 секунд
помогите,пожалуйста.нужно всю задачу решить на указателях

Добавлено через 46 минут
откликнитесь кто-нибудь!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2012, 23:17     Слияние массивов
Посмотрите здесь:

C++ Слияние массивов
C++ Слияние трех массивов
C++ Слияние 2-х одномерных массивов
Слияние отсортированных массивов. C++
C++ Сортировка и слияние массивов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
03.04.2012, 23:38     Слияние массивов #2
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
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
 
/*
 *
 */
int main() {
    std::size_t N = 0, M = 0;
    unsigned int *A = 0, *B = 0, *C = 0;
 
    std::srand( std::time( 0 ));
 
    std::cout << "Enter A size: ";
    std::cin >> N;
 
    std::cout << "Enter B size: ";
    std::cin >> M;
 
    A = new unsigned int[ N ];
    B = new unsigned int[ M ];
    C = new unsigned int[ N + M ];
 
    std::cout << "A array: ";
    for ( std::size_t i = 0; i < N; i++ ) {
        A[ i ] = std::rand() % 101;
        std::cout << std::setw( 2 ) << A[ i ] << ' ';
    }
 
    std::cout << std::endl << "B array: ";
    for ( std::size_t i = 0; i < M; i++ ) {
        B[ i ] = std::rand() % 101;
        std::cout << std::setw( 2 ) << B[ i ] << ' ';
    }
 
    for ( std::size_t i = 0; i < N + M; i++ )
        C[ i ] = ( i < N ? A[ i ] : B[ i - N ]);
 
    std::cout << std::endl << "C array: ";
    for ( std::size_t i = 0; i < M + N; i++ )
        std::cout << std::setw( 2 ) << C[ i ] << ' ';
 
    return 0;
}
Dekio
Фрилансер
Эксперт C++
 Аватар для Dekio
5816 / 1214 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
03.04.2012, 23:39     Слияние массивов #3
Toshkarik, std::merge
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
03.04.2012, 23:43     Слияние массивов #4
STL еще толком не изучал, сейчас времени маловато но я пытаюсь
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
04.04.2012, 02:56     Слияние массивов #5
Цитата Сообщение от elka Посмотреть сообщение
Задан массив A из N элементов и массив B из M элементов. Сформировать массив L из массивов A и B путем их слияния так, чтобы сначала располагались все элементы массива A, а затем все элементы массива B. Значения N и M ввести с клавиатуры, а массивы A и B сформировать из случайных чисел в диапазоне от 0 до 100.
Добавлено через 39 секунд
помогите,пожалуйста.нужно всю задачу решить на указателях

Добавлено через 46 минут
откликнитесь кто-нибудь!
C++
1
2
3
4
5
6
memcpy(c, a, n*sizeof(unsigned int));//копирование n элементов в начало массива по адресу c
memcpy(c+n, b, m*sizeof(unsigned int));//копирование m элементов
//и не забывай про
delete[] a;
delete[] b;
delete[] c;
Есть же язык Си со своими функциями! Мне он чем-то даже больше крестов нравится.
elka
1 / 1 / 0
Регистрация: 31.03.2012
Сообщений: 38
04.04.2012, 17:51  [ТС]     Слияние массивов #6
а нельзя мой код посмотреть?просто оба массива выводятся,а когда при слиянии он ничего не выводит
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
04.04.2012, 18:19     Слияние массивов #7
Цитата Сообщение от elka Посмотреть сообщение
а нельзя мой код посмотреть?просто оба массива выводятся,а когда при слиянии он ничего не выводит
Ну а что? Там ошибки! Всё потому что выпендрёж с инкрементированием указателей. Хотел сделать "красиво", а вышло?
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
for (;p<a+n;p++)
{
cin>>*p;//каждый раз указатель уходит всё дальше от начала массива
}//и не возвращается в него
int x=n+m;
c=new int[x];
int *h=c;           //ещё до начала цикла p указывает на последний элемент, даже дальше
//и тут забыли   вставить p=a, чтоб сначала начать.
// как минимум или перестать выпендриваться
for (;h<c+n;h++)//h++ в цикле делается, а p++ нет
{
*h=*p;//копирование только последнего элемента массива p
//вставить p++
}
for (*h=n;h<c+x;h++)//*h=n??? что за?? ты вообще что хотел сказать? может h=c+n (всё без "*")
{
*h=*(b+n-1);//та же ошибка h увеличивается, указ. на копируемое - нет
//и вообще я не понял, что за n-1
}
for (;h<c+x;h++)
{
cout<<*h<<" ";
}
cin.get();//В конце память освобождать надо!!!
ci
Короче если не понимаешь что у тебя переменная, что указатель, какой указатель куда указывает переделай с использованием оператора [ ]

Добавлено через 11 минут
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
#include <iostream.h>
#include <string.h>
int main()
{
int i;
int n,m;
int *a,*b,*c;
int *p;
int *q;
cout<<"Vvedite razmer  1 massiv";
cin>>n;
a= new int[n];
cout<<"Vvedite massiv 1";
for (p=a;p<a+n;p++)
{
cin>>*p;
}
cout<<endl;
cout<<"Vvedite razmer   massiv";
cin>>m;
b=new int[m];
cout<<"Vvedite massiv 2";
for (p=b; p<b+m;p++)
{
cin>>*p;
}
cout<<endl;
int x=n+m;
c=new int[x];
q=a;
for (p=c;p<c+n;p++)
{
*p=*q;
q++;
}
q=b;
for (*p=c+n;p<c+x;p++)
{
*p=*q;
q++;
}
for (p=c;p<c+x;p++)
{
cout<<*p<<" ";
}
delete[] a;
delete[] b;
delete[] c;
cin.get();
}
Так лучше
elka
1 / 1 / 0
Регистрация: 31.03.2012
Сообщений: 38
04.04.2012, 18:30  [ТС]     Слияние массивов #8
поставила и p++ и дальше.ничего не пишет

Добавлено через 5 минут
теперь поняла,что вы имели ввиду))спасибо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2012, 18:30     Слияние массивов
Еще ссылки по теме:

Слияние массивов C++
Слияние двух массивов C++
C++ Слияние массивов

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

Или воспользуйтесь поиском по форуму:
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
04.04.2012, 18:30     Слияние массивов #9
Цитата Сообщение от elka Посмотреть сообщение
поставила и p++ и дальше.ничего не пишет
Что ты поставила. Тот код, что я исправлял (из моего последнего сообщения) работает или нет??

а? проблемы уже нет? ну и ладно.
Yandex
Объявления
04.04.2012, 18:30     Слияние массивов
Ответ Создать тему
Опции темы

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