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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
elka
1 / 1 / 0
Регистрация: 31.03.2012
Сообщений: 38
#1

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

03.04.2012, 23:17. Просмотров 1813. Ответов 8
Метки нет (Все метки)

Задан массив 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 минут
откликнитесь кто-нибудь!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2012, 23:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Слияние массивов (C++):

Слияние массивов - C++
Даны два массива. Массив А состоит из N элементов и отсортирован по возрастанию. Массив В состоит из М элементов и отсортирован по...

Слияние массивов - C++
я новичек в программировании. Помогите пожалуйста решить слудеющию задачу на С++. Заданы три упорядоченных по возрастанию массива f,...

Слияние массивов - C++
Получить массив С(k), упорядоченный по возрастанию, путем слияния массивов A(n) и B(m), упорядоченных перед этим по возрастанию, где k = n...

Слияние массивов на с++ - C++
Добродень всем.задача такая:массив структур размера N(в моем случае 100).разбить на ленты.т.о получается 10 лент по 10 элементов в каждой...

Слияние трех массивов - C++
Помогите пожалуйста написать небольшую программку. Даны три массива A, B, C Написать программу слияния этих массивов. Убидительная...

Сортировка и слияние массивов - C++
Товарищи, помогите пожалуйста разобраться с заданием. Буду очень благодарен.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 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;
}
0
Dekio
Фрилансер
Эксперт С++
5837 / 1218 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
03.04.2012, 23:39 #3
Toshkarik, std::merge
1
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
03.04.2012, 23:43 #4
STL еще толком не изучал, сейчас времени маловато но я пытаюсь
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 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;
Есть же язык Си со своими функциями! Мне он чем-то даже больше крестов нравится.
0
elka
1 / 1 / 0
Регистрация: 31.03.2012
Сообщений: 38
04.04.2012, 17:51  [ТС] #6
а нельзя мой код посмотреть?просто оба массива выводятся,а когда при слиянии он ничего не выводит
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 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();
}
Так лучше
0
elka
1 / 1 / 0
Регистрация: 31.03.2012
Сообщений: 38
04.04.2012, 18:30  [ТС] #8
поставила и p++ и дальше.ничего не пишет

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

а? проблемы уже нет? ну и ладно.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2012, 18:30
Привет! Вот еще темы с ответами:

Слияние 2-х одномерных массивов - C++
всем привет Даны два одномерных массива с произвольными НО упорядоченными по возрастанию элементами написать функцию для слияния этих...

Слияние двух массивов - C++
Всем привет. Возникла проблема с задачей. Даны два массива одинакоого размера. Нужно создать 3 массив который будет хранить элементы...

Слияние отсортированных массивов. - C++
задача: есть двумерный целочисленный массив n на n в котором каждая строка отсортирована по возрастанию. надо слить его в одномерный...

Ошибка в алгоритме слияние массивов - C++
Этот код производит слияние двух массивов &quot;int a = {4,2,6}&quot; и &quot;b = {645,998,333}&quot; в массив &quot;c&quot; #include &quot;stdafx.h&quot; #include...


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

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

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