@romentigo

C++ — как заполнить динамический массив элементами меньше 6 из другого динам. массива?

Нужно ввести последовательность чисел и создать динамический массив, а потом сформировать ещё один массив, в котором будут элементы первого массива, только меньше 6. Я сделал генератор случайных чисел, который при запуске генерирует новые числа. Есть счётчик, который равен количеству введённых чисел и счётчик для 2-го массива. Всё это для создания этих динам. массивов.
Теперь сама проблема: не знаю как в функции FillNewArray реализовать заполнение второго массива элементами первого, значения которых меньше 6. Сам код прикрепляю ниже:
#include "stdafx.h"
#include <iostream>
#include <ctime>

using namespace std;

int FillNewArray(int Array[], int count, int LesArray[], int Lesser)
{
	for (int i = 0; i < count; i++)
	{
		if (Array[i] < 6)
		{
			LesArray[i] = Array[i];
		}
	}
	return LesArray[Lesser];
}

void ShowArray(int Array[], int count)
{
	for (int i = 0; i < count; i++)
	{
		cout << Array[i] << "\t";
	}
}

int main()
{
	srand(time(0));
	int count;
	int Lesser = 0;

	cout << "Input the size of your array: ";
	cin >> count;

	int *Array = new int[count];

	for (int i = 0; i < count; i++)
	{
		Array[i] = 10 - rand() % 20;
		if (Array[i] < 6)
		{
			Lesser++;
		}
	}

	cout << "The array: ";
	ShowArray(Array, count);

	int *LesArray = new int[Lesser];

	FillNewArray(Array, count, LesArray, Lesser);
	cout << "\nChanged array: ";
	ShowArray(LesArray, Lesser);

	system("pause>>void");
	return 0;
}
  • Вопрос задан
  • 2881 просмотр
Решения вопроса 1
int FillNewArray(int Array[], int count, int LesArray[], int Lesser)
{
	int j = 0;
	for (int i = 0; i < count; i++)
	{
		if (Array[i] < 6)
		{
			LesArray[j++] = Array[i];
		}
	}
	return LesArray[Lesser];
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
vt4a2h
@vt4a2h Куратор тега C++
Senior software engineer (C++/Qt/boost)
У вас же C++:

#include <algorithm>
...

std::copy_if(std::begin(srcArray), std::end(srcArray), std::begin(dstArray), 
             [](auto && elem) { return elem < 6; });


Ну там back_inserter в случае вектора может быть. Кстати, в С++ надо использовать vector или array.
Как сделать генератор случайных чисел можно посмотреть тут: www.cplusplus.com/reference/random/.

Итого, ваша задача сведётся к 4-5 строчкам кода.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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