
С++ Домашнее задание Петя успевает по математике лучше всех в классе, поэтому учитель задал ему
сложное домашнее задание, в котором нужно в заданном наборе целых чисел найти сумму всех положительных элементов, затем найти где в заданной последовательности находятся максимальный и минимальный элемент и вычислить произведение чисел, расположенных в этой последовательности между ними. Так же известно, что минимальный и максимальный элемент встречаются в заданном множестве чисел только один раз и не являются соседними. Поскольку задач такого рода учитель дал Пете около ста, то Петя как сильный программист смог написать программу, которая по заданному набору чисел самостоятельно находит решение. А Вам слабо? Входные данные В первой строке записано единственное число N (N≤15) — количество элементов массива. Вторая строка содержит N целых чисел, представляющих заданный массив. Все элементы массива разделены пробелом. Каждое из чисел во входном файле, в том числе и N, не превышает 20 по абсолютной величине. Выходные данные В единственную строку нужно вывести два числа, разделенных пробелом: сумму положительных элементов и произведение чисел, расположенных между минимальным и максимальным элементами. Значения суммы и произведения не превышают по модулю 106. Примеры Ввод Вывод 5 -1 -10 2 6 7 15 12

Ответы на вопрос

#include <iostream>
#include <vector>
using namespace std;
int pos_sum(vector<int> &v){
int res = 0;
for(auto &i : v)
res += i * (i > 0);
return res;
}
int min_max_mult(vector<int> &v){
int res = 1;
pair<int,int> mn,mx;
mn = {v[0],0};
mx = mn;
for(int i = 1; i < v.size(); i++){
if(v[i] > mx.first){
mx.first = v[i];
mx.second = i;
}
if(v[i] < mn.first){
mn.first = v[i];
mn.second = i;
}
}
int st = min(mn.second, mx.second), fn = max(mn.second,mx.second);
for(int i = st + 1; i < fn; i++)
res *= v[i];
return res;
}
int main(){
int n;
cin >> n;
vector<int> a(n);
for(auto &i : a) cin >> i;
cout << pos_sum(a) << " " << min_max_mult(a);
}



Для решения данной задачи вам потребуется написать программу на языке C++. Программа должна считать входные данные, найти сумму положительных элементов, а также найти максимальный и минимальный элементы и вычислить произведение чисел, расположенных между ними. Вот пример решения:
cpp#include <iostream>
#include <vector>
int main() {
int N;
std::cin >> N; // Считываем количество элементов массива
std::vector<int> arr(N);
// Считываем элементы массива
for (int i = 0; i < N; i++) {
std::cin >> arr[i];
}
int sum = 0;
int min_idx = -1, max_idx = -1;
// Инициализируем минимальный и максимальный элементы
int min_element = 21, max_element = -21;
// Находим сумму положительных элементов, минимальный и максимальный элементы
for (int i = 0; i < N; i++) {
if (arr[i] > 0) {
sum += arr[i];
}
if (arr[i] < min_element) {
min_element = arr[i];
min_idx = i;
}
if (arr[i] > max_element) {
max_element = arr[i];
max_idx = i;
}
}
int product = 1;
// Вычисляем произведение чисел между минимальным и максимальным элементами
if (min_idx < max_idx) {
for (int i = min_idx + 1; i < max_idx; i++) {
product *= arr[i];
}
} else {
for (int i = max_idx + 1; i < min_idx; i++) {
product *= arr[i];
}
}
std::cout << sum << " " << product << std::endl;
return 0;
}
Этот код сначала считывает данные, затем находит сумму положительных элементов, минимальный и максимальный элементы, и, наконец, вычисляет произведение чисел между минимальным и максимальным элементами. Результат выводится на экран.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili