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

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

Войти
Регистрация
Восстановить пароль
 
Лилька_
Сообщений: n/a
#1

Нужен листинг на С++ (даны два вектора, упорядоченные по возрастанию. Слить их в один вектор, так чтобы сохранилась упорядоченность) - C++

20.05.2013, 18:17. Просмотров 1103. Ответов 8
Метки нет (Все метки)

Задание: Даны два вектора {хi}, {уi}, i = 1,..., 10, упорядоченные по возрастанию. Слить их в один вектор {zi}, i = 1, …, 20, так чтобы сохранилась упорядоченность.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2013, 18:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нужен листинг на С++ (даны два вектора, упорядоченные по возрастанию. Слить их в один вектор, так чтобы сохранилась упорядоченность) (C++):

Слить вектора в один вектор {z},i=1,...20 так, чтобы сохранилась упорядоченность - C++
даны два вектора {x}, {y}, i=1,...10, упорядоченные по возрастанию. слить их в один вектор {z},i=1,...20 так, чтобы сохранилась...

Даны два упорядоченных массива. Слить их в третий, но чтобы элементы не повторялись - C++
Даны два упорядоченных массива. Нужно слить их в третий, но чтобы элементы не повторялись. (один проход по массивам)

Упорядочить массив так, чтобы сначала иши упорядоченные положительные члены а потом упорядоченные отрицательные члены - C++
упорядочить одномерный массив таким образом,чтобы сначала шли упорядоченные положительные члены а потом упорядоченные по возрастанию...

В список, упорядоченный по возрастанию, вставить новый элемент так, чтобы упорядоченность сохранилась - Lisp
Нужна помощь. В список, упорядоченный по возрастанию, вставить новый элемент так, чтобы упорядоченность сохранилась. Нужно реализовать...

Не получается перемножить два вектора, один комплексный другой его комплексно-сопряженный, так чтобы получился вектор с - MathCAD
Не получается скалярно перемножить два вектора, один комплексный другой его комплексно-сопряженный, так чтобы получился вектор с...

Списки. Вставить в упорядоченный список новый элемент так, чтобы сохранилась упорядоченность - Turbo Pascal
Вставить в непустой список L, элементы которого упорядочены по неубыванию, новый элемент E так, чтобы сохранилась упорядоченность.

8
ilya80let
6 / 6 / 1
Регистрация: 14.05.2013
Сообщений: 43
21.05.2013, 10:40 #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
//---------------------------------------------------------------------------
#include <iostream.h>
#include <conio.h>
#include <vcl.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{
int arr1[]={1,2,3,4,5};
int size1 = sizeof(arr1)/sizeof(int);
int arr2[]={6,7,8,9,10};
int size2 = sizeof(arr2)/sizeof(int);
/*const int size3 = size1 + size2;
cout<<size3<<endl;
int arr3[size3];
 
*/
int arr3[10];
 
for(int i=0; i<size1; i++)
arr3[i]=arr1[i];
 
for(int i=0; i<size2; i++)
arr3[i+size1]=arr2[i];
 
for(int i=0; i<sizeof(arr3)/sizeof(int); i++)
cout<<arr3[i]<<endl;
 
getch();
    return 0;
}
//---------------------------------------------------------------------------
Кстати просветите почему не компилиться строчка int arr3[size3];, size3 обЪявлена константой
есть предположение, что на момент выделения памяти компилятор не знает размер size1 и size2
Тогда, как обойти это и создать массив, если заранее не известна длина
0
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
21.05.2013, 11:15 #3
Цитата Сообщение от ilya80let Посмотреть сообщение
Кстати просветите почему не компилиться строчка int arr3[size3];, size3 обЪявлена константой
есть предположение, что на момент выделения памяти компилятор не знает размер size1 и size2
Тогда, как обойти это и создать массив, если заранее не известна длина
Использовать указатели и команду new.
1
Croessmah
Эксперт CЭксперт С++
13510 / 7668 / 866
Регистрация: 27.09.2012
Сообщений: 18,866
Записей в блоге: 3
Завершенные тесты: 1
21.05.2013, 11:18 #4
Цитата Сообщение от ilya80let Посмотреть сообщение
size3 обЪявлена константой
есть предположение, что на момент выделения памяти компилятор не знает размер size1 и size2
Именно. Это должна быть не просто const-значение, а константа времени компиляции.

Цитата Сообщение от ilya80let Посмотреть сообщение
Тогда, как обойти это и создать массив, если заранее не известна длина
Выделять память в куче(пост #3). Ну еще как вариант можно использовать надстройку GNU VLA
1
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
21.05.2013, 11:44 #5
ilya80let, ваш алгоритм работать не будет так как не сказанно, что все элементы второго массива больше элементов первого. Можно решить задачу так:
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
//Программа расчета суммы на депозите
#include<iostream>
using namespace std;
void showArray (int arr[], int n);
int main()
{
    int arr1[10] = {1,2,3,4,5,7,8,9,10,15};
    int arr2[10] = {2,3,4,6,7,8,10,11,14,17};
    int array[20];
    
    int index1 = 9, index2 = 9;
    for(int i = 19; i >= 0; i--)
    {
        if (index1 < 0)
        {
            array[i] = arr2[index2];
            index2--;
            continue;
        }
        else if (index2 < 0 )
        {
            array[i] = arr1[index1];
            index1--;
            continue;
        }
 
        if (arr1[index1] > arr2[index2])
        {
            array[i] = arr1[index1];
            index1--;
        }
        else
        {
            array[i] = arr2[index2];
            index2--;
        }
    }
 
    showArray (array, 20);
 
    system("pause");
    return 0;
}
void showArray (int arr[], int n)
{
    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";
    cout << endl;
}
0
ilya80let
6 / 6 / 1
Регистрация: 14.05.2013
Сообщений: 43
21.05.2013, 11:47 #6
Цитата Сообщение от Лилька_ Посмотреть сообщение
Слить их в один вектор {zi}, i = 1, …, 20, так чтобы сохранилась упорядоченность.
я не сортировал новый массив, а слил два и сохранил их упорядоченность
0
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
21.05.2013, 11:53 #7
Ок, а если взять два вот таких массива:
arr1: 1 3 5 7 9
arr2: 2 4 6 12 14
То должен получиться упорядоченный массив
array: 1 2 3 4 5 6 7 9 12 14
Ваш алгоритм этого не даст. И последнее
так как не сказанно, что все элементы второго массива больше элементов первого.
0
ilya80let
6 / 6 / 1
Регистрация: 14.05.2013
Сообщений: 43
21.05.2013, 12:02 #8
Цитата Сообщение от Лилька_ Посмотреть сообщение
Слить их в один вектор {zi}, i = 1, …, 20, так чтобы сохранилась упорядоченность.
Я понял предлжение так "Слить их чтобы сохранилась упорядоченность" , вы поняли чтобы новый массив был упорядочен, то есть отсортирован.
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
21.05.2013, 13:09 #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <algorithm>
#include <vector>
#include <iterator>
 
int main()
{
    std::vector<int> x = {1, 3, 5, 7, 9};
    std::vector<int> y = {2, 4, 6, 12, 14};
    
    std::vector<int> res;
    res.reserve(x.size() + y.size());
    
    merge(x.begin(), x.end(), y.begin(), y.end(), std::back_inserter(res));
    
    copy(res.begin(), res.end(), std::ostream_iterator<int> (std::cout, " "));
}
http://ideone.com/CPwhmv
0
21.05.2013, 13:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2013, 13:09
Привет! Вот еще темы с ответами:

В упорядоченный по неубыванию числовой массив вставить в заданное число так, чтобы упорядоченность сохранилась - Pascal
В упорядоченный по неубыванию числовой массив вставить в заданное число так, чтобы упорядоченность сохранилась.

Заданы два упорядоченных по возрастанию массива. Соединить их в один массив, так чтобы элементы были упорядоченны по возрастанию - Free Pascal
Заданы два упорядоченных по возрастанию массива А и В, состоящих из N и M вещественных элементов соответственно. Соединить их в один массив...

Даны два упорядоченных массива, каждый из 4 слов. Слить их в один - Turbo Pascal
7. Даны два упорядоченных массива, каждый из 4 слов. Слить их в один.

Упорядочить массив по возрастанию и вставить число так, чтобы упорядоченность не нарушилась - Pascal ABC
одномерный массив, элементы которого задаются с помощью датчика случайных чисел от -50 до +50. 1) использовать сортировку простыми...


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

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

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