Системное администрирование

Сложная задача по с++. решить

Дан массив: А [M] (M вводится с клавиатуры). Необходимо удалить из массива четные или нечетные значения. Пользователь вводит данные в массив, а также с помощью меню решает, что нужно удалить.
Кау удалить не знаю, но вот программа, которая заменит чётные или нечётные числа на 0
#include"pch.h"
#include

using namespace std;

int main() {
setlocale(LC_ALL, "RUS");

int m;

cout << "Введите количество элементов массива arr:";
cin >> m;

int * arr = new int[m];

for (int i = 0; i < m; i++) {
cout << "Введите значение элемента arr[" << i << "]: ";
cin >> arr[i];
}

cout << "Ваш массив:" << endl;
for (int i = 0; i < m; i++) {
cout << arr[i] << "\t";
}

cout << endl;

int s;

cout << "Для удаления чётных чисел введите 1, для удаления нечётных чисел введите 2: ";
cin >> s;
while (s != 1 && s != 2) {
cout << "Неправильный ввод. Повторите попытку: ";
cin >> s;
}

for (int i = 0; i < m; i++) {
if (s == 1) {
if (arr[i] % 2 == 0) {
arr[i] = 0;
}
}
if (s == 2) {
if (arr[i] % 2 != 0) {
arr[i] = 0;
}
}
}

cout << "Ваш массив после удаления цифр: " << endl;
for (int i = 0; i < m; i++) {
cout << arr[i] << "\t";
}
}
Акрамхан Бакенов
Акрамхан Бакенов
1 146
Лучший ответ
Сергей Ляхов добавьте комментарии, чтобы было понятно что есть что
Акрамхан Бакенов int * arr = new int[m];//объявление динамического массива arr

//ниже идёт заполнение массива с клавиатуры. Заполнение происходит с помощью цикла for. Мы проходим по каждой ячейке массива и заполняем её.
for (int i = 0; i < m; i++) {
cout << "Введите значение элемента arr[" << i << "]: ";
cin >> arr[i];//ввод значения
}
//Ниже описан вывод массива. Он также, как и ввод, сделал с помощью цикла for. Единственное отличие в том, что вместо cin пишется cout. Также была использована escape-последовательность "\t" для создания табуляции между элементами массива.
cout << "Ваш массив:" << endl;
for (int i = 0; i < m; i++) {
cout << arr[i] << "\t";//операция вывода массива
}
Акрамхан Бакенов //далее объявляется целочисленная переменная s, в которую мы будем записывать 1 или 2. По условию, заданному ниже в программе - 1 для удаления чётных чисел, 2 для удаления нечётных.
int s;

cout << "Для удаления чётных чисел введите 1, для удаления нечётных чисел введите 2: ";
cin >> s;//ввод числа 1 или 2
//На случай, если было введено не 1 и не 2, а какое-то другое число, была разработана проверка. Она осуществляется с помощью цикла while с условием s != 1 И s != 2. Т. е. пока s не примет значение 1 или 2, цикл будет выводить, что было введено неверное число и попросит нас снова произвести ввод. При вводе 1 или 2 программа выйдет из цикла.
while (s != 1 && s != 2) {
cout << "Неправильный ввод. Повторите попытку: ";
cin >> s;
}
Акрамхан Бакенов //Здесь, с помощью цикла for мы проходим по элементам массива. С помощью условного оператора if идёт проверка на то, какие числа нужно будет удалить (1 - чётные, 2 - нечётные). Так вот, в первом условном операторе задаётся условие s == 1, т. е. если s = 1. Если s = 1, то дальше с помощью условного оператора if идёт проверка числа на чётность. if (arr[i] % 2 == 0). Если остаток элемента массива при делении на 2 равен 0, то это число чётное и заменяется на 0, т. е. arr[i]=0. Далее проверяется s=2 с помощью оператора if. Потом создаётся ещё один условный операто if. arr[i]%2 != 1,т. е. если отстаток элемента массива на 2 не равен 0,то число нечётное замена на 0
for (int i = 0; i < m; i++) {
if (s == 1) {
if (arr[i] % 2 == 0) {
arr[i] = 0;
}
}
if (s == 2) {
if (arr[i] % 2 != 0) {
arr[i] = 0;
}
}
}
Акрамхан Бакенов А дальше идёт вывод массива. Пытался расписать всё подробно, надеюсь, что понятно
#inсludе <iоstrеаm>
#inсludе <аlgоrithm>
#inсludе <vесtоr>
int mаin()
{
  sizе_t n;
  std::соut << "Еntеr аrrау dimеnsiоn: ";
  std::сin >> n;
  std::vесtоr<int> numbеrs;
  fоr (sizе_t i = 0; i < n; ++i)
  {
    std::соut << "Еntеr А [" << i << "]: ";
    int а;
    std::сin >> а;
    numbеrs.рush_bасk(а);
  }
  std::соut << "Еntеr уоur сhоiсе, 0 - dеlеtе оdd, 1 - еvеn еlеmеnts (vаluеs): ";
  int b;
  std::сin >> b;
  аutо lаmbdа = b ? [](int num) { rеturn (num % 2) == 0; } : [](int num) { rеturn (num % 2) != 0; };
  аutо еnd = std::rеmоvе_if(numbеrs.bеgin(), numbеrs.еnd(), lаmbdа);
  numbеrs.еrаsе (еnd, numbеrs.еnd());
  std::соut << "Nеw аrrау: " << std::еndl;
  fоr (int num : numbеrs)
    std::соut << num << " ";
  rеturn 0;
}
ПРОСТО МЕГА СЛОЖНАЯ ЗАДАЧА, ИЛОН МАСК БЫ ПРИЗАДУМАЛСЯ
#include

using namespace std;

int main()
{
setlocale(LC_ALL,"rus");
int massiv[7]={1,2,3,4,5,6,7};
int newMassiv[7];
int length=0;
cout << "Исходный массив" << endl;
for (int i=0; i<7; i++)
{
cout << massiv[i] << " ";
}
cout << endl << "Удалим нечётные числа и получим" << endl;
for (int i=0; i<7; i++)
{
if (massiv[i]%2==0)//если i-е значение массива нечётное
{
newMassiv[length]=massiv[i];//то помещаем его в новый массив
length++;
}
}
for (int i=0; i<length; i++)
{
cout << newMassiv[i] << " ";
}
return 0;
}

Принцип должен быть ясен, осталось замутить динамический массив и вариацию выбора с 1 - четные 2 - не четные. Сам думай, а то вообще халява.
Сергей Ляхов напишите комментарии ко всем строкам, чтобы было понятно что есть что
Сергей Ляхов что такое lenght ++?