Напишите программу, которая заполняет массив из N элементов случайными целыми числами в диапазоне [ A , B ] и определяет количество чётных и количество нечётных элементов этого массива.
Входные данные
Входная строка содержит три числа: границы диапазона случайных чисел A и B , а также размер массива N . Все числа разделены пробелами. Гарантируется, что 0 < N ≤ 10000 .
Выходные данные
В первой строке программа должна вывести N элементов построенного массива, разделив их пробелами, а во второй строке – количество чётных элементов этого массива, а затем (через пробел) – количество нечётных элементов массива.
Программа должна быть на питоне
Исходный код:
def pack(m, k, l, p=0):
c = 0 # базовый случай когда еще не создавали контейнеры
# если есть что еще фасовать по пакетам
if m >= l:
m -= l
p += 1
c, p, m = pack(m, k, l, p) # продолжаем фасовать муку
# если можно создать контейнер, то создаем
if p >= k:
p -= k
c += 1
return c, p, m
m, k, l = map(int, input().split())
print(*pack(m, k, l))
Примечание:
Часть объяснений выполнено в виде комментариев в коде. Комментарии перед отправкой на проверку рекомендую стереть.
Описание переменных: m - остаток муки на текущий момент, k - кол-во пакетов в контейнере, l - кол-во муки в пакете. c - кол-во полных контейнеров, p - кол-во полных пакетов муки. При рекурсивном погружении фасуем по пакетам, при всплытии фасуем по контейнерам. Грамотная возвращение и передача параметров делают свое дело.
Cкрин из редактора кода тоже прикрепил)
Объяснение:
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Rus");
const int n = 20;
int arr[n];
for (int i = 0; i < n; i++)
{
cout << "Введите число массива: "; cin >> arr[i];
}
cout << "Наш массив будет состоять из таких элиментов: " << endl;
for (int j = 0; j < n; j++)
{
cout << arr[j] << endl;
}
cout << "Положительные элименты массива: "<< endl;
int summ = 0;
for (int e = 0; e < n; e++)
{
if (arr[e] > 0)
{
cout << arr[e] << endl;
summ += arr[e];
}
}
cout << "Сумма положительных элиментов= " << summ << endl;
cout << "Негативные элименты массива: " << endl;
int prolif = 1;
for (int f = 0; f < n; f++)
{
if (arr[f] < 0)
{
cout << arr[f] << endl;
prolif *= arr[f];
}
}
cout << "Произвидение негативных элиментов массива= " << prolif << endl;
return 0;
}