Объединить массивы и отсортировать их - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь объединить 2 массива int, и после этого я пытаюсь отсортировать полученный массив.Чтение работает очень хорошо, но я думаю, что есть некоторые проблемы в объединенной части. Если кто-то может осветить меня, я буду счастлив и извините меня за мой мусорный английский.ПРИМЕЧАНИЕ. Код должен поддерживаться на низком уровне программирования (например, код C ++ для новичков в основном). Код выше:

int N, M,vect1[500],vect2[500];

cin>>N;
for(int i=0; i<N; i++)
    cin>>vect1[i];

cin>>M;
for(int i=0; i<M; i++)
    cin>>vect2[i];

int rez1 = sizeof(vect1) / sizeof(vect1[0]);
int rez2 = sizeof(vect2) / sizeof(vect2[0]);
int rez3=rez1+rez2;

vect1[N+rez3];
int j=0;
for(int i = rez1; i < rez3 ; i++`
{
        vect1[i]=vect2[j]; 
        j++;
}

int sortat = 0, aux;
while (sortat == 0)
 {
sortat = 1;
for (int i = 1; i < rez3; ++i)
  if (vect1[i] > vect1[i + 1])
    {
     sortat = 0;
     // interschimbam pe v[i] cu v[i + 1]
      aux = vect1[i];
      vect1[i] = vect1[i + 1];
      vect1[i + 1] = aux;
  }}                 for(int i=0; i <rez3; i++)
    cout<<vect1[i];       
return 0; 

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

std::vector используется как массив в стиле C, но не имеет вдвое меньше раздражающих причуд.

#include <iostream> // for std::cin, std::cout
#include <vector> // for std::vector
#include <algorithm> // for std::sort

int main()
{
    int N, M;
    std::cin >> N;

    std::vector<int> vect1(N); // Allocates N ints
    for(int i = 0; i != N; ++i)
        std::cin >> vect1[i]; // Indexed like an array

    std::vector<int> vect2(M); // Allocates M ints
    for(int i = 0; i != M; ++i)
        std::cin >> vect2[i];

    vect1.reserve(N + M); // Reallocate to fit more
    vect1.insert(vect1.end(), vect2.begin(), vect2.end()); // add elements at the back

    std::sort(vect1.begin(), vect1.end()); // All the algorithms operate on pairs of iterators

    for(int i = 0; i != M + N; ++i)
        std::cout << vect1[i];
}
0 голосов
/ 14 декабря 2018
template <class Type, size_t sizeA, size_t sizeB>
void concat_arrays(const Type(&a)[sizeA],
                  const Type(&b)[sizeB],
                  Type(&result)[sizeA + sizeB])
{
    Type(&midpoint)[sizeB] = (Type(&)[sizeB])(result[sizeA]);
    std::copy(a, a + sizeA, result);
    std::copy(b, b + sizeB, midpoint);
}

Вы можете использовать следующим образом:

int main()
{
    int a[3] = { 1, 2, 3 };
    int b[3] = { 10, 20, 30 };
    int c[6];

    concat_arrays(a, b, c); // c = a . b

    size_t cSize = sizeof(c) / sizeof(*c);

    for (int i = 0; i < cSize; i++)
        std::cout << c[i] << std::endl;

    return 0;
}
...