Другие языки программирования и технологии

Задан массив Z(N).Переписать его в массив Y. С++

Задан массив Z(N).Переписать его в массив Y, таким образом, чтобы в массиве Y были расположены сначала положительные, затем отрицательные, затем нулевые элементы.
С++
#include <iostream>
using namespace std;
void transform(int* va, int* vb, const size_t n) {
auto pos = 0U;
for (auto i = 0U; i < n; ++i) if (va[i] > 0) vb[pos++] = va[i];
for (auto i = 0U; i < n; ++i) if (va[i] < 0) vb[pos++] = va[i];
while (pos < n) vb[pos++] = 0;
}
void show(int* vec, const size_t n) {
for (auto i = 0U; i < n; ++i) cout << ' ' << vec[i];
cout.put('\n');
}
int main() {
int box[] = { 1, 3, -8, 3, 0, 4, -7, -3, 0, 4, -1, -5, 0, 2 };
const auto n = size(box);
int tmp[n];
transform(box, tmp, n);
show(box, n);
show(tmp, n);
system("pause");
}
АФ
Андрей Факиро
87 686
Лучший ответ
#include <iostream>

using namespace std;

int main() {

const int N = 5;
int Z[N] {1, -2, 0, 4, -5}, Y[N], j = 0;

for (int i = 0; i < N; i++) {
if (Z[i] > 0) Y[j++] = Z[i];
}

for (int i = 0; i < N; i++) {
if (Z[i] < 0) Y[j++] = Z[i];
}

for (int i = 0; i < N; i++) {
if (Z[i] == 0) Y[j++] = Z[i];
}

for (auto n : Y) cout << n << " ";
}

Похожие вопросы