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

Построить упорядоченный по возрастанию третий массив слиянием двух заданных - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
ddatt
Сообщений: n/a
26.12.2010, 20:50     Построить упорядоченный по возрастанию третий массив слиянием двух заданных #1
Задать два упорядоченных по возрастанию одномерных массивы. Построить упорядоченный по возрастанию третий массив слиянием двух заданных.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2010, 20:50     Построить упорядоченный по возрастанию третий массив слиянием двух заданных
Посмотрите здесь:

C++ Массив: Сформируйте массив C[n+m], состоящий из элементов массивов А и В, упорядоченный по возрастанию.
Даны два произвольных одномерных массива действительных чисел М1 и М2. Сформировать слиянием этих массивов упорядоченный массив М3 C++
Провести слияние двух массивов по возрастанию, создавая третий массив C++
Создать третий массив, в котором нужно собрать элементы двух заданных массивов C++
C++ Получить массив С(К). упорядоченный по возрастанию, путем слияния массивов A(N) и В(М). упорядоченных по возрастанию (К = N + М).
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
26.12.2010, 22:36     Построить упорядоченный по возрастанию третий массив слиянием двух заданных #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
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <algorithm>
 
using namespace std;
 
#define m 5
#define n 6
 
void out(const int* ptr, const size_t& Buffer)
{
    for (size_t i = 0; i < Buffer; ++i)
        cout << ptr[i] << "  ";
    cout << endl;
}
 
int main()
{   
    setlocale(LC_ALL, "Russian");
    int *a = new int[m];
    int *b = new int[n];
    for (size_t i = 0; i < m; ++i)
        a[i] = i + 1;
    out(a, m);
    for (size_t i = 0; i < n; ++i)
        b[i] = 2 * i + 1;
    out(b, n);
    int* c = new int[m + n];
    merge(a, a + m, b, b + n,  c);
    out(c, n + m);
    _getch();
    return 0;
}
Strony
0 / 0 / 0
Регистрация: 25.11.2010
Сообщений: 5
27.12.2010, 00:46     Построить упорядоченный по возрастанию третий массив слиянием двух заданных #3
Ребят, помогите решить задачу. Чет не оч у меня с массивами
-----------
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1. номер минимального по модулю элемента массива;
2. сумму модулей элементов массива, расположенных после первого отрицательного элемента.
Сжать массив, удалив из него все элементы, величина которых находится в интервале [a,b]. Освободившиеся в конце массива элементы заполнить нулями.
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
27.12.2010, 01:25     Построить упорядоченный по возрастанию третий массив слиянием двух заданных #4
Strony, держи
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
53
54
55
56
57
58
59
60
61
62
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <algorithm>
 
using namespace std;
 
double a, b;
 
template <typename T>
void out(const T* ptr, const size_t& Buffer)
{
    for (size_t i = 0; i < Buffer; ++i)
        cout << ptr[i] << " ";
    cout << endl;
}
 
bool cond(const double& x)
{
    return (x >=a ) && (x <= b);
}
 
int main()
{   
    setlocale(LC_ALL, "Russian");
    size_t n;
    printf_s("Введите число элементов массива\n");
    scanf_s("%d", &n);
    // создаем и инициализируем массив;
    double *vec = new double[n];
    printf_s("Введите поочередно элементы массива\n");
 
    for (size_t i = 0; i < n; ++i)
        scanf_s("%lf", &vec[i]);
    // найдем номер минимального по модулю элемента массива;
    size_t Imin = 0;
    for (size_t i = 0; i < n; ++i)
        if (abs(vec[i]) < abs(vec[Imin]))
            Imin = i;
    printf_s("Номер минимального элемента массива %d\n", Imin);
    // найдем сумму модулей элементов, расположенных после первого отрицательнго элемента;
    double Sum = 0;
    int I_ = n;
    for (size_t i = 0; i < n; ++i)
        if (vec[i] < 0)
        {
            I_ = i;
            break;
        }
    for (size_t i = I_ + 1; i < n; ++i)
        Sum += abs(vec[i]);
    // сожмем массив, удалив элементы находящиеся в интервале [a; b];
    printf_s("Сумма элементов, расположенных после первого отрицательнго %lf\nВведите границы интервала [a; b]\n", Sum);
    scanf_s("%lf%lf", &a, &b);
    double* new_end = remove_if(vec, vec + n, cond);
    while (new_end != vec + n)
        *new_end++ = 0;
    out(vec, n);
    _getch();
    delete[]vec;
    return 0;
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
27.12.2010, 02:30     Построить упорядоченный по возрастанию третий массив слиянием двух заданных #5
Держи.

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
53
#include <iostream>
#include <iterator>
#include <vector>
#include <algorithm>
#include <numeric>
#include <cmath>
#include <functional>
 
int main()
{
    std::vector<double> Vec;
    std::copy(std::istream_iterator<double>(std::cin), std::istream_iterator<double>(),
        std::back_inserter(Vec));
    std::vector<double>::iterator it=std::min_element(Vec.begin(), Vec.end(),
        [](double t, double f) -> bool
    {
        return fabs(t) < fabs(f);
    });
    std::cout<<"Min element "<< *it <<" have number "<< std::distance(Vec.begin(), it) + 1 <<'\n';
    it=std::find_if(Vec.begin(), Vec.end(), std::bind2nd(std::less<double>(), 0));
    if(it != Vec.end())
    {
        std::cout<<"First negative element is: "<< *it <<" with number "<< std::distance(Vec.begin(), it) + 1 <<'\n';
        double sum=std::accumulate(it+1, Vec.end(), 0.0,
            [](double t, double f) -> double
        {
            return fabs(t) + fabs(f);
        });
        std::cout<<"Sum after element with number "<< std::distance(Vec.begin(), it) + 1 <<" is "<< sum <<'\n';
    }
    else
        std::cout<<"There is no negative elements in array\n";
    double a, b;
    std::cin.clear();
    std::cout<<"Enter range for delete elements: ";
    std::cin>>a>>b;
    int cnt=0;
    Vec.erase(std::remove_if(Vec.begin(), Vec.end(), [&](double t) -> bool
    {
        if(t >= a && t <= b)
        {
            ++cnt;
            return true;
        }
        return false;
    }), Vec.end());
    for(int i=0; i<cnt; ++i)
        Vec.push_back(0.0);
    std::cout<<"Result vector\n";
    std::copy(Vec.begin(), Vec.end(), std::ostream_iterator<double>(std::cout, " "));
    system("pause");
    return 0;
}
Yandex
Объявления
27.12.2010, 02:30     Построить упорядоченный по возрастанию третий массив слиянием двух заданных
Ответ Создать тему
Опции темы

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