Динамическое выделение памяти для массива внутри функции.Из- за ошибки инициализации в строке if (numbers[i]) выходной массив остаётся пустым
Задание:реализовать функцию, формирующую выходной массив нечетных чисел B на основе входного целочисленного массива A такой, что каждый элемент выходного массива
- получен путем суммирования наиближайших элементов входного массива для получения нечетного числа.
- равен элементу в той же позиции входного массива, если он нечетный Глобальные параметры использовать запрещено; допустимо использование дополнительных функций. Использовать только динамические массивы, ввод и вывод данных должен быть осуществлен в текстовый файл. Во входном и выходном файле необходимо указать размерность массива (массивов), размерность выходного массива определяется реализуемой функцией и является возвращаемым значением. Вход: 9- 3,11,3,6, 7,6,7,9,3 ; Выход 3- 11,7,3 ; 3 и 9 размеры массивов. Мой код:
#include <iostream>
#include <cmath>
#include<fstream>
#include <ctime>
using namespace std;
bool checkPrime(int number)
{
if (number <= 1) {
return false;
}
for (int i = 2; i * i <= number; i++) {
if (number % i == 0) {
return false;
}
}
return true;
}
int main()
{
setlocale(LC_ALL, "ru");
int size;
cout << "Введите длинну массива:" << endl;
cin >> size;
int* numbers = new int[size];
char ch;
int count = 0;
ifstream f("text.TXT");
while (!(f.fail() || f.eof()) && count < size)
{
f >> numbers[count++];
f >> ch;
}
int isprime = 0;
int prime_counter = 0;
int every_second_prime_size = 0;
int Size = 100;
cout << "\n Исходный массив: \n";
for (int i = 0; i < count; i++)
{
cout << numbers[i] << ' ';
}
f.close();
int n = sizeof(*numbers) / sizeof(numbers[0]);
int* every_second_prime = new int[Size];
cout << "\n Получившийся массив: \n";
for (int i = 0; i < n; i++)
{
if (checkPrime(numbers[i])) здесь выходит предупреждение и написано массив не инициализирован.
{
prime_counter++;
if (prime_counter % 2 == 0) {
every_second_prime[every_second_prime_size++] = numbers[i];
}
}
}
for (int i = 0; i < every_second_prime_size++; i++)
{
cout << every_second_prime[i] << ' ';
}
return 0;
for (int i = 0; i < count; i++) {
ofstream file("text1.TXT", ios_base::app);
if (file.is_open()) {
file << every_second_prime[i] << " ";
}
else
cout << "Файл не найден!" << endl;
}
}
И из- за ошибки инициализации в строке if (numbers[i]) выходной массив остаётся пустым
Источник: Stack Overflow на русском