Условие
Дана последовательность действительных чисел [latex]a_1, a_2, \dots, a_n[/latex]. Требуется домножить все члены последовательности на квадрат её наименьшего члена, если [latex]a_1 \geq 0[/latex], в противном случае — на квадрат наибольшего.
Решение
Для решения воспользуемся стандартным классом vector. Для этого заведем переменную данного типа, заполним её числами со входного потока. Далее, в зависимости от первого (нулевого) элемента вектора, воспользуемся стандартной функцией min_element() или max_element() (библиотека algorithm). Далее умножим каждый элемент на (соответственно) минимум/максимум и выведем последовательность.
Тесты
| № | Входные данные | Выходные данные | 
| 1 | -2 2 43 5 -10 12 0 -1 | -3698 3698 79507 9245 -18490 22188 0 -1849 | 
| 2 | 0 100 99 0 -1 1 | 0 100 99 0 -1 1 | 
| 3 | 42 1 1 1 0 -1 24 -24 -42 | 74088 1764 1764 1764 0 -1764 42336 -42336 -74088 | 
Код
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include <iostream> #include <vector> #include <algorithm> using namespace std; int main()  { 	vector<int> x; 	int a; 	while (cin >> a) 		x.push_back(a); 	if (x.at(0) >= 0) 	{ 		int min = *min_element(x.begin(), x.end()); 		for (int &i : x) 			i *= min * min; 	} 	else 	{ 		int max = *max_element(x.begin(), x.end()); 		for (int &i : x) 			i *= max * max; 	} 	for (int i : x) 		cout << i << " "; 	return 0; } | 
Замечание
Перед изменением значения членов последовательности и их выводом нам необходимо найти минимум или максимум, для чего необходимо знать значения всех её членов. В связи с этим, решить задачу в формате «считал — вывел» (потоковой обработкой) невозможно.
Ссылки
Код на ideaone (vector).
 
						
Хорошо, принято.