Что выведет код Middle Алгоритмы STL и ranges обновлено
Что выведет: accumulate, count_if, partial_sum
Вопрос
Что выведет программа (C++20, g++ 14)? Каждый вывод с новой строки, как в консоли.
#include <algorithm>
#include <functional>
#include <iostream>
#include <numeric>
#include <vector>
int main() {
std::vector<double> d{0.5, 0.5, 1.5};
std::cout << std::accumulate(d.begin(), d.end(), 0) << ' '
<< std::accumulate(d.begin(), d.end(), 0.0) << '\n';
std::vector<int> v{5, 1, 4, 2, 3};
std::sort(v.begin(), v.end(), std::greater<>());
std::vector<int> p(v.size());
std::partial_sum(v.begin(), v.end(), p.begin());
for (int x : p) std::cout << x << ' ';
std::cout << '\n';
auto it = std::lower_bound(p.begin(), p.end(), 12);
std::cout << (it - p.begin()) << ' '
<< std::count_if(v.begin(), v.end(), [](int x) { return x % 2; }) << '\n';
}
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: 1 2.5, 5 9 12 14 15, 2 3. С начальным 0 аккумулятор int: 0.5 отбрасывается дважды, затем 0 + 1.5 даёт 1.
Что выведет
1 2.5
5 9 12 14 15
2 3
Разбор
С начальным 0 аккумулятор int: 0.5 отбрасывается дважды, затем 0 + 1.5 даёт 1. С 0.0 сумма 2.5. После сортировки по убыванию 5 4 3 2 1, префиксные суммы 5 9 12 14 15. Первый элемент ≥ 12 на индексе 2. Нечётных чисел три: 5, 3, 1.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.