C/C++

Одномерный массив нужна программа срочно)

1)Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

2)Распечатать полученный массив.

3)Удалить все элементы равные 0.

4)Добавить после первого четного элемента массива элемент со значением M[ I-1 ]+2.

5)Распечатать полученный массив.
#include <iostream>
#include <ctime>
using namespace std;

int main() {
int ar[50];
cout << "Enter a size of the array: ";
int size;
cin >> size;

cout << "\nThe array: ";
srand(time(0));
for (int i = 0; i < size; ++i) {
cout << (ar[i] = rand() % 41 - 20) << " ";
}
cout << "\n";

for (int i = 0; i < size; ++i) {
if (ar[i] == 0) {
for (int j = i; j + 1 < size; ++j) ar[j] = ar[j + 1];
--size;
}
}

int first_even = 0;
for (int i = 0; i < size; ++i) {
if (ar[i] % 2 == 0) {
first_even = i;
break;
}
}

for (int i = size++; i > first_even; --i) {
ar[i] = ar[i - 1];
}
ar[first_even+1] = (first_even? ar[first_even-1]+2 : ar[size-1]+2);

cout << "\nThe modified array: ";
for (int i = 0; i < size; ++i) cout << ar[i] << " ";
cout << "\n";

return 0;
}
C З
C З
6 243
Лучший ответ
// Если после первого чётного то вот так

#include <algorithm>
#include <iostream>
#include <random>
using namespace std;
int* create(int size);
int* destroy(int* arr);
void fill_random(int* arr, int size, int min, int max);
void print(int* arr, int size);
int* delete_zero(int* arr, int& size);
int* insert(int* arr, int& size, int* to, int value);
int main() {
int size = 10;
auto arr = create(size);
fill_random(arr, size, 0, 5);
print(arr, size);
arr = delete_zero(arr, size);
print(arr, size);
auto pred = [](int x) { return ~x & 1; };
auto pos = find_if(arr, arr + size, pred);
if (pos != arr + size) {
arr = insert(arr, size, pos + 1, *(pos) + 2);
print(arr, size);
}
arr = destroy(arr);
system("pause > nul");
}
int* create(int size) {
return new int[size];
}
int* destroy(int* arr) {
if (arr != nullptr) {
delete[] arr;
arr = nullptr;
}
return arr;
}
void fill_random(int* arr, int size, int min, int max) {
uniform_int_distribution<> uid(min, max);
mt19937 gen{ random_device()() };
auto rand = [&] { return uid(gen); };
generate(arr, arr + size, rand);
}
void print(int* arr, int size) {
auto print = [](int x) { cout << x << ' '; };
for_each(arr, arr + size, print);
puts("");
}
int* delete_zero(int* arr, int& size) {
auto zero = find(arr, arr + size, 0);
auto is_zero = [](int x) { return x == 0; };
auto it = remove_if(arr, arr + size, is_zero);
auto nsize = it - arr;
auto tmp = create(nsize);
copy(arr, arr + nsize, tmp);
size = nsize;
arr = destroy(arr);
arr = create(size);
copy(tmp, tmp + size, arr);
tmp = destroy(tmp);
return arr;
}
int* insert(int* arr, int& size, int* to, int value) {
auto tmp = create(size + 1);
copy(arr, arr + size, tmp);
auto it = tmp + size;
to = tmp + (to - arr);
while (it != to) {
*it = *(it - 1);
--it;
}
*it = value;
++size;
arr = destroy(arr);
arr = create(size);
copy(tmp, tmp + size, arr);
tmp = destroy(tmp);
return arr;
}
Алексей Кобяк
Алексей Кобяк
85 044
Решебник в помощь!