Программа на С++, одномерные массивы

95
12 января 2022, 13:00

Записать элементы массива X[N] в массив Y[N], сдвинув элементы массива Х влево на 3 позиции. При этом 3 элемента из начала массива Х перемещаются в конец. В массиве Y[N] перед первым четным элементом добавить элемент со значением -1. Использовать операторы ввода-вывода printf-scanf. Помогите, пожалуйста, составить программу или переделать мою.

#include <stdio.h>
#include <cstdlib>
#include <iostream>
int main(int argc, char** argv)
{
    unsigned int X[100], Y[100];
    int i, N, i1;
    printf("\n N=");
    scanf("%d", &N);
    for (i = 0; i < N; i++)
    {
        printf("X[%d]=", i);
        scanf("%d", &X[i]);
    }
    printf("\n");
    for (i = 0; i < N; i++)
    {
        if (i < N - 3) Y[i] = X[i + 3];
        else Y[i] = X[i - N + 3];
    }
    i1 = -1;
    for (i = 0; i < N; i++)
    {
        printf("Y[%d]=%d\t", i, Y[i]);
        if (Y[i] % 2 == 0) i1 = i;
    }
    if (i1 != 0)
    {
        printf("\n");
        printf("Y[%d]=%d\n", i1, Y[i1]);
        for (i = N; i > i1 - 1; i--)
            Y[i] = Y[i + 1];
        Y[i1] = -1;
        N++;
        for (i = 0; i < N; i++)
            printf("Y[%d]=%d\t", i, Y[i]);
        printf("\n");
    }
    else
    {
        printf("\n");
        printf("There are not even elements \n");
    }
    return 0;
}
Answer 1

Ну для решение циклического сдвига есть std решение - std::rotate https://en.cppreference.com/w/cpp/algorithm/rotate

Вот пример кода

#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>

int main() {
    std::vector<int> a{ 1, 2, 3, 4, 5, 6, 7 };
    std::copy(std::begin(a), std::end(a), std::ostream_iterator<uint64_t>{std::cout, " "});
    std::ostream_iterator<char>(std::cout, "") = '\n';
    std::vector<int> b{ a };
    std::rotate(std::begin(a), std::begin(a) + 3,  std::end(a));
    std::copy(std::begin(a), std::end(a), std::ostream_iterator<uint64_t>{std::cout, " "});
    std::ostream_iterator<char>(std::cout, "") = '\n';
    return 0;
}
Answer 2
for (i = 0; i < N; i++) {
  if (Y[i] % 2 == 0) {
    i1 = i;
    break;
  }
}
if (i1 != -1) {
  for (i = N; i > i1; i--)
    Y[i] = Y[i - 1];  
  Y[i1] = -1;
}
READ ALSO
Программа на С++

Программа на С++

Прошу помочь знающих людей в решении данной задачи, так как мои полномочия на этом всё

82
Ошибка в ConnectNamedPipe

Ошибка в ConnectNamedPipe

Очень нужна помощь, создал приложение сервер которое создает канал и подключается к нему, но функция под вторым пунктом меню - ConnectNamedPipe, возвращает...

68
Структура внутри которой массив других структур

Структура внутри которой массив других структур

Как я могу создать массив структур внутри которой будут массивы других структур? Например: есть class students , мне нужна новая stuct theclass внутри которой...

119
Изменение размеров индикатора QCheckBox

Изменение размеров индикатора QCheckBox

Требуется изменить размер поля для галочки в QCheckBoxПробовал сделать это с помощью настройки стиля:

78