#include <iostream> // Подключение функций ввода и вывода (cin, cout)
#include <clocale> // Подключение поддержки русского языка
using namespace std; // Использование пространства имен std
// Функция для вычисления произведения отрицательных элементов (из задания 2)
int multNegative(int A[], int N)
{
/* Предусловие: A - массив целых чисел размера N, N > 0
Постусловие: функция возвращает произведение отрицательных элементов массива */
int P = 1; // Переменная для произведения
for (int i = 0; i < N; i++) // Проход по всем элементам массива
{
if (A[i] < 0) // Если элемент отрицательный
{
P *= A[i]; // Умножаем
}
}
return P; // Возвращаем итоговое произведение
}
// Функция для построения массива B по заданию 3
void buildArrayB(int A[], int B[], int N, int P)
{
/* Предусловие: A и B - массивы целых чисел размера N, P - значение произведения из задания 2
Постусловие: заполнен массив B, где положительные элементы A увеличены на P, а остальные скопированы без изменений */
for (int i = 0; i < N; i++) // Цикл по всем элементам
{
if (A[i] > 0) // Если элемент положительный
{
B[i] = A[i] + P; // Увеличиваем на найденное произведение P
}
else // Отрицательные элементы и нули
{
B[i] = A[i]; // Оставляем без изменений
}
}
}
int main()
{
setlocale(LC_ALL, "Russian"); // Включение русского языка в консоли
// Предусловие: пользователь вводит 10 целых чисел в массив A
// Постусловие: вычисление P, формирование массива B и вывод обоих массивов на экран
const int N = 10; // Размер массивов
int A[N]; // Исходный массив
int B[N]; // Новый массив
// Ввод элементов массива A с клавиатуры
cout << "Введите 10 целых чисел через пробел или Enter:" << endl;
for (int i = 0; i < N; i++)
{
cin >> A[i]; // Поэлементный ввод
}
// Вывод исходного массива A на экран
cout << "\nИсходный массив A:" << endl;
for (int i = 0; i < N; i++)
{
cout << A[i] << " ";
}
cout << endl;
// Шаг 1: Вызов функции из задания 2 (находим произведение отрицательных)
int P = multNegative(A, N);
cout << "\nПроизведение отрицательных элементов (P): " << P << endl;
// Шаг 2: Построение нового массива B через отдельную функцию (задание 3)
buildArrayB(A, B, N, P);
// Вывод нового массива B строго из main()
cout << "\nСформированный массив B:" << endl;
for (int i = 0; i < N; i++)
{
cout << B[i] << " ";
}
cout << endl;
system("pause"); // Задержка консоли
return 0; // Успешное завершение программы
}