Условие задачи
Задана последовательность целых чисел. Подсчитать количество элементов, у которых чётные соседи.
Входные данные
В первой строке задано количество элементов последовательности $n$ $(n \leqslant 100)$. Во второй строке заданы сами элементы, значение каждого из которых по модулю не превышает $100$.
Выходные данные
Вывести в одной строке количество элементов последовательности с чётными соседями.
Тесты
№ | Входные данные | Выходные данные |
1 | 6 1 2 3 4 5 6 |
2 |
2 | 9 3 6 3 5 2 9 1 2 5 |
0 |
3 | 3 2 1 2 |
1 |
4 | 6 13 24 54 66 44 77 |
2 |
5 | 4 100 224 666 222 |
2 |
Программный код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <iostream> using namespace std; int main(){ int i=1, n, prev, pres, fut, count = 0; cin >> n; cin >> prev; //вводим предыдущий элемент cin >> pres; //вводим текущий элемент while ((cin >> fut) && (i<n)) { if (prev % 2 == 0 && fut % 2 == 0) count++; prev = pres; //приравниваем предыдущий к текущему pres = fut; //приравниваем текущий к будущему i++; } cout << count; return 0; } |
Решение
Идея решения задачи состоит в том, чтобы создать три переменные: $prev$ (предыдущий), $pres$ (настоящий, текущий) и $fut$ (будущий). Затем в цикле мы перезаписываем эти переменные т.е.: настоящий становится прошлым, будущий настоящим, а новый будущий мы читаем из cin. Так же, в ходе решения задачи обнаружилась проблема с чтением количества элементов. Допустим, если мы записали, что $n=6$, а дальше ввели $10$ элементов, то количество элементов с чётными соседями будет считаться для $10$ элементов. Чтобы избежать этого мы ограничиваем количество читаемых элементов с помощью счётчика i++ и цикла while.
Спасибо за комментарий! Всё исправила
Спасибо за комментарий, исправила!