Задача. Даны целые числа [latex]a_{1},\ldots, a_{n}[/latex]. Наименьший член последовательности [latex]a_{1}, \ldots, a_{n}[/latex] заменить целой частью среднего арифметического всех членов, остальные члены оставить без изменения. Если в последовательности несколько членов со значением min [latex](a_{1}, \ldots, a_{n})[/latex], то заменить последний по порядку.
Тесты
| Test | Input | Output | 
| 1 | 2 4 8 16 2 4 | 2 4 8 16 6 4 | 
| 2 | 1 1 1 1 | 1 1 1 1 | 
| 3 | -5 5 -10 10 -10 5 5 | -5 5 -10 10 0 5 5 | 
| 4 | 2 6 9 -4 -5 7 13 | 2 6 9 -4 4 7 13 | 
| 5 | 0 0 0 0 0 1 | 0 0 0 0 0 1 | 
| 6 | 0 1 0 0 2 0 25 | 0 1 0 0 2 4 25 | 
Код программы
| 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 28 29 30 31 32 33 | #include<iostream> #include<cmath> #include<vector> using namespace std; int main() {   vector<int>a;   int el; //supporting variable for saving input values   while(cin >> el)     {       a.push_back(el); //adding value to the vector     }   int min = a[0]; // minimal value   int num = 0; // number of the minimal value   double sum = 0;    for(int i=0; i<a.size(); i++)     {       if(a[i]<=min) //finding the number of the minimal value         {           min = a[i];            num = i;         }       sum += a[i];     }   int average = floor(sum/a.size()); //calculing the average of vector elements   a[num] = average; //replacing minimal value by the average   for(int i = 0; i < a.size(); i++)     {       cout << a[i] << " ";     }   return 0; } | 
Алгоритм
Мы считываем все числа до конца входного потока и добавляем их в вектор. В полученной последовательности мы находим минимальный элемент, а также сумму всех членов. Затем мы вычисляем их среднее арифметическое, и извлекаем целую часть. Полученное число мы помещаем в вектор на место последнего минимального элемента, после чего выводим результат.
 
						
Для отправки комментария необходимо войти на сайт.