Дан целочисленный массив из \(N = 40\) элементов. Элементы массива могут принимать целые значения от -10000 до 10000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество пар элементов массива, чья сумма положительна. Под парой подразумевается два подряд идущих элемента массива. Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных. Индексация элементов в массиве начинается с нуля.
\[\begin{array}{|l|l|l|} \hline \text{Бейсик} & Python & \text{Алгоритмический язык} \\ \hline CONST \; N \; AS \; INTEGER \; = \; 40 & \text{\# \; допускается также} &\underline{\text{алг}} \\ DIM \; A \; (0 \; TO \; N-1) \; AS \; LONG \; &\text{\# \; использовать три} &\underline{\text{нач}} \\ DIM \; I \; AS \; LONG& \text{\# целочисленные переменные i,t,k} & \quad \underline{\text{цел}} \; N = 40 \\ \quad \quad \; \; T \; AS \; LONG& a \; = [] &\quad \underline{\text{целтаб}} \; a[0:N-1] \\ \quad \quad \; \; K \; AS \; LONG& n \; = \; 40&\quad \underline{\text{цел}} \; i, \; t, \; k \\ FOR \; I \; = \; 0 \; TO \; N-1 &for \; i \; in \; range(0, \; n):&\quad \underline{\text{нц для}} \; i \; \underline{\text{от}} \; 0 \; \underline{\text{до}} \; N-1 \\ \quad \quad \; \; INPUT \; A(I)& \quad a.append \; (int(input()))&\quad \quad \underline{\text{ввод}} \; a[i] \\ NEXT \; I& ...&\quad \underline{\text{кц }} \\ ... & &... \\ END & & \underline{\text{кон}} \\ \hline \end{array}\]
\[\begin{array}{|l|l|} \hline \ \text{Паскаль} & C++ \\ \hline const &\#include \; <iostream> \\ \quad N = 40 & using \; namespace \; std; \\ var & const \; int \; N = 40; \\ \quad a: \; array \; [0..N-1] \; of \; longint; & int \; main() \{ \\ \quad i, \; t, \; k: \; longint; &long \; a[N]; \\ begin & long \; i, \; t, \; k; \\ \quad for \; i \; := 0 \; to \; N-1 \; do &for \; (i = 0; \; i < N; \; i++) \; cin >> a[i]; \\ \quad \quad readln (a[i]); & ... \\ ... &return \; 0; \\ end. & \} \\ \hline \end{array}\]
В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Cython 0.20). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в приведённых фрагментах.
Например, для исходного массива из 10 элементов
5
-3
-8
13
-9
7
82
-34
4
5
программа должна вывести
6
(Под условие подходят следующие пары: 5 и -3 (сумма равна 2), -8 и 13 (сумма равна 5), 13 и -9 (сумма равна 4), 7 и 82 (сумма равна 89), 82 и -34 (сумма равна 48), 4 и 5 (сумма равна 9)).
Переменная \(t\) будет отвечать за количество пар элементов массива, чья сумма больше нуля, поэтому изначально \(t = 0\). За пару мы будем считать элементы \(a[i]\) и \(a[i+1]\) (не \(a[i]\) и \(a[i-1]\)!). В цикле от 0 до \(N-1\) мы будем проверять, положительна ли пара. Цикл до \(N-1\), так как индексация элементов массива начинается с нуля, значит, элемента \(a[N]\) нет, и у элемента \(a[N-1]\) нет второй пары (так как \(a[N-1 + 1] = a[N]\)). Если пара оказалась положительна, мы увеличим \(t\) на 1. Вне цикла мы выведем \(t\) — количество пар элементов массива, чья сумма больше нуля.
Пример на \(C++\):
\(t = 0;\)
\(for \; (i = 0; \; i < N-1; \; i++) \; \{\)
\(\quad if \; ((a[i] + a[i+1]) > 0) \; t++; \)
\(\}\)
\(cout \; << \; t;\)
Ответ: см. решение