55 БАЛОВ, написать код ** c++ Мальчик Егор ** досуге пишет свой текстовый редактор...

+969 голосов
3.9m просмотров

55 БАЛОВ, написать код на c++ Мальчик Егор на досуге пишет свой текстовый редактор Блокнот++. В базовые возможности редактора уже заложено два основных режима, которые позволяют быстрее набирать текст. В первом режиме текстовый редактор бибикает при нажатии любой клавиши. Во втором режиме текстовый редактор портит текст при нажатии любой клавиши. При этом Егор решил, что его редактор будет портить текст следующим образом: он переставит все символы так, что сначала будут стоять символы стоявшие на четных местах (0, 2, 4, 6, 8...), а затем символы, стоящие на нечетных местах (1, 3, 5, 7, 9...). Помогите Егору, написав функцию int* rearrange(int *A, int Asize), которая будет переставлять все элементы указанным образом и возвращать новый массив. Затем смоделируйте вывод редактора, если пользователь нажмет на клавишу во втором режиме K раз. Формат входных данных В первой строке дано целое число N (1 ≤ N ≤ 100) — количество элементов в массиве. В следующей строке заданы целые числа, не превосходящие 230 по абсолютной величине. В последней строке дается число K (1 ≤ K ≤ 50) — количество раз, которые массив «портится». Формат выходных данных В выходные данные требуется вывести массив K раз (после каждого преобразования). входные данные 10 1 2 3 4 5 6 7 8 9 10 3 выходные данные 1 3 5 7 9 2 4 6 8 10 1 5 9 4 8 3 7 2 6 10 1 9 8 7 6 5 4 3 2 10


Информатика (19 баллов) | 3.9m просмотров
+151

Да неее

+185

Точно был уже где-то такой вопрос...

Дан 1 ответ
+162 голосов

Код:

#include

int* rearrange(int *A, int Asize) {

   int * result = new int[Asize];

   int p = 0;

   for (int i = 0; i < Asize; i += 2) {

       result[p] = A[i];

       ++p;

   }

   for (int i = 1; i < Asize; i += 2) {

       result[p] = A[i];

       ++p;

   }

   return result;

}

void print_arr(const int *A, int Asise) {

   for (int i = 0; i < Asise; ++i) {

       std::cout << A[i] << " ";</em>

   }

}

int* change_it_k_times(int * const A, int Asize, int K) {

   int * result = A;

   for (auto i = 0; i < K; ++i) {

       result = rearrange(result, Asize);

       print_arr(result, Asize);

   }

   return result;

}

template

void get_sequence(T* A, int N) {

   for (auto i = 0; i < N; ++i) {

       std::cin >> A[i];

   }

}

int main () {

   int N, K;

   std::cin >> N;

   auto A = new int[N];

   get_sequence(A, N);

   std::cin >> K;

   auto R = change_it_k_times(A, N, K);

   delete[] A;

   delete[] R;

   return 0;

}

(6.8k баллов)
+171

В следующий раз оформляй задание по-нормальному

+144

Обновляй страницу

+57

На

+161

Он должен каждую итерацию выводить?

+103

в выходных данных, должно выводить 1 3 5 7 9 2 4 6 8 10, 1 5 9 4 8 3 7 2 6 10, 1 9 8 7 6 5 4 3 2 10, а выводит 1 9 8 7 6 5 4 3 2 10