Робота з STL
C++
1 задача
Використовуючи контейнерний клас <vector> та ітератори для забезпечення доступу до
елементів колекції. За необхідності використайте алгоритми, які надає бібліотека STL.
Задано масив цілих чисел A(n), n ≤ 300 . Розробити програму, яка обчислює
добуток елементів цього масиву, якщо масив упорядкований за зростанням або
суму, якщо масив не упорядкований. Масив буде упорядкованим за зростанням
якщо ai <= ai+1 для i = 1,2,...,n −1.
2 задача
Використовуючи контейнерний клас <string> та ітератори для забезпечення доступу до
елементів колекції. За необхідності використайте алгоритми, які надає бібліотека STL.
Задано текст, слова в якому розділені пробілами і розділовими знаками.
Розробити програму, яка вилучає в кожному слові цього тексту всі наступні
входження першої літери.
Ответы
Ответ:
Задача 1:
Для вычисления произведения элементов массива, упорядоченного по возрастанию или сумме, можно использовать алгоритм accumulate. Вот пример кода:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
int n;
std::cin >> n;
std::vector<int> A(n);
for (int i = 0; i < n; ++i) {
std::cin >> A[i];
}
long long result = std::accumulate(A.begin(), A.end(), 1);
if (A.begin() == A.end()) {
std::cout << "Product: " << result << std::endl;
} else {
std::sort(A.begin(), A.end());
long long result_sorted = std::accumulate(A.begin(), A.end(), 1);
std::cout << "Product sorted: " << result_sorted << std::endl;
}
return 0;
}
Задача 2:
Для выделения всех слов в тексте, начинающихся с любой буквы, можно использовать алгоритм find_if. Вот пример кода:
#include <iostream>
#include <string>
#include <algorithm>
#include <sstream>
#include <iterator>
std::istream& read_words(std::istream& in, std::vector<std::string>& words) {
std::string word;
while (std::getline(in, word, ' ')) {
words.push_back(word);
}
return in;
}
int main() {
std::istream& cin = std::cin;
std::vector<std::string> words;
read_words(cin, words);
std::copy_if(words.begin(), words.end(), std::ostream_iterator<std::string>(std::cout, " "),
[](const std::string& s) {
return s.size() > 0 && std::isalpha(s[0]);
});
return 0;
}
Объяснение:
Лучший ответ плиз : )