В одномерном массиве все нулевые элементы перенести в конец массива, дополнительный массив использовать не разрешается. Посчитать количество перемещений. Есть идея, что нужно просто двигать на i+1, но реализовать не могу
Циклом проверяй элементы массива на равность нулю, потом просто меняй значения местами. The post was merged to previous Oct 12, 2022 for(int i = 0; i < длинна массива - i; i++) типа такого цикла
bomjorii, там чел ниже код скинул, так и запиши. Тот же самый принцип что я описал, ток сделан чуть иначе
bomjorii, если не важен порядок, то вот так #include <iostream> using namespace std; int main() { int n[] = {1, 0, 2, 3, 0, 4, 5, 4, 0}; int ns = sizeof(n) / sizeof(int); for (int i = 0; i < ns; i++) { cout << n[i] << " "; } int lastReplaceIndex = ns; for (int i = ns - 1; i >= 0; i--) { if (n[i] == 0) { swap(n[i], n[lastReplaceIndex - 1]); lastReplaceIndex -= 1; } } cout << endl; for (int i = 0; i < ns; i++) { cout << n[i] << " "; } } C #include <iostream> using namespace std; int main() { int n[] = {1, 0, 2, 3, 0, 4, 5, 4, 0}; int ns = sizeof(n) / sizeof(int); for (int i = 0; i < ns; i++) { cout << n[i] << " "; } int lastReplaceIndex = ns; for (int i = ns - 1; i >= 0; i--) { if (n[i] == 0) { swap(n[i], n[lastReplaceIndex - 1]); lastReplaceIndex -= 1; } } cout << endl; for (int i = 0; i < ns; i++) { cout << n[i] << " "; } }