@Shadow2020

Как перезаписать динамический массив?

Добро времени суток друзья. Стоит задача:
Написать программу на языке С++ для создания динамического массива A[N],
заполнить массив с помощью генератора случайных чисел(получение случайного числа в интервале[a, b])
оформить как функцию (а = -30, b = 30)).Полученный массив перезаписать, удалив из него все четные числа.
Перезапись оформить как функцию.

Застрял на выполнении перезаписи массива, а конкретно не знаю как удалить из массива четные числа?
#include <iostream>
#include <math.h>

using namespace std;

//генератора случайных чисел в интервале[a, b]
int generateInt(int a, int b) {
    return rand() % (b - a + 1) + a;
}

//перезапись массива
int rewriteArray(int *A, int i) {
    if (A[i] % 2 != 0) {
        // Удаление четных чисел ??????
    }

    return A[i];
}

int main() {

    setlocale(LC_ALL, "RUSSIAN");

    int const N = 10; //размер массива
    int *A = new int[N]; //выделяю память для динамического массива
    int a = -30, b = 30; //интервал[a, b] для генератора случайных чисел

    srand(time(0));

    for (int i = 0; i < N; i++) {
        A[i] = generateInt(a,b);
        cout << rewriteArray(A,i) << endl;
    }

    delete [] A; //очищаю память
    return 0;
}

Надеюсь на вашу помощь!
  • Вопрос задан
  • 1771 просмотр
Пригласить эксперта
Ответы на вопрос 1
@PUTINVODKAGTA
1. Посчитай количество четных чисел в исходном массиве. Создай переменную count для подсчета четных чисел.
int count = 0;
for(int i = 0; i<N; i++)
{
  if(A[i]%2==0)
  {
     count++;
  }
}

2. Создай новый массив размером N-count.
int *A_new = new int [N-count];
3. Скопируй из исходного массива нечетные числа.
for (int i = 0,j=0; i < N; i++)
{
 if(A[i]%2!=0)
 {
   A_new[j]=A[i]
   j++; //переход к следующему элементу массива
 }
}

4. Выводишь результат в консоль
for(int i = 0, i < (N-count);i++)
{
   cout<<A_new[i]<<" ";
}

В результате получишь массив только из нечетных чисел.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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