PascalABC.NET 3.3.5, сборка 1669 от 21.05.2018
Внимание! Если программа не работает, обновите версию!
1. Функция
function avg(a:array of integer):=a.Where(t->t>0).Average;
begin
var a:=ReadAllText('input.txt').ToIntegers;
Writeln('Среднее значение положительных элементов ',avg(a))
end.
2. Процедура
procedure avg(a:array of integer; var m:real);
begin
m:=a.Where(t->t>0).Average
end;
begin
var a:=ReadAllText('input.txt').ToIntegers;
var m:real;
avg(a,m);
Writeln('Среднее значение положительных элементов ',m)
end.
Хорошо видно, что решение с функцией имеет явное преимущество.
Ответ:
// ConsoleApplication1.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#include <iostream>
#include <vector>
using std::cout;
int main()
{
std::vector<int> ints = { 1 , -2, -3, -4, 5, 6, -7, -8, -9, 10 };
cout << "vector before transformation: ";
for (auto integer : ints) {
cout << integer << " ";
}
cout << std::endl;
for (std::size_t i = 1; i < ints.size(); ) {
if (ints[i] < 0) {
ints.erase(ints.begin() + i);
i += 1;
continue;
}
i += 2;
}
cout << "vector after transformation: ";
for (auto integer : ints) {
cout << integer << " ";
}
cout << std::endl;
}
Объяснение:
По условию создаем вектор, удаляем элементы из вектора, если число ниже 0, движемся через один элемент по вектору ¯\_(ツ)_/¯
X. Y. Комментарий
4. 35 X >=Y ? нет. тогда идём на цикл по стрелке НЕТ
4+2=6. 35-6=29. X>=Y? Нет. Опять идём на цикл по стрелке НЕТ
6+2=8. 29-8=20. X>=Y? Нет. Делаем цикл по стрелке НЕТ
8+2=10. 20-10=10. X>=Y? Да. Выходим из цикла по стрелке ДА
Начальный день, когда растение было высотой 20см, считаем нулевым. Через день растение вырастет на 2 см, станет 22 см и это будет 1-й день.