Найти количество промежутков постоянства среди чисел, введенных с клавиатуры - C (СИ)
Формулировка задачи:
Друзья,совсем с недавних пор изучаю Си, и хотел попросить помощи в решении следующей задачи:
Нужно найти кол-во промежутков постоянства среди чисел, введенных с клавиатуры.
Это нужно сделать без помощи массивов и функций, имея только циклы и условия.
Я не понимаю, как сделать, чтобы он считал эти промежутки. Пусть идет ряд чисел 5 1 2 2 4 3 3 3 7
Вводимые числа я задал переменной а.
Что нужно сделать дальше? Если бы у нас только 2 числа шли подряд, мы бы записали это условие в цикле и поставили бы счетчик, например k++ . Где k - то самое количество промежутков, но если будет 3 числа подряд, он считает там как 2 промежутка и т.д.
Можно задать первые 2 или 1 число из вводимых еше до цикла, а цикл for начать с i=2 , но что делать дальше?Как сравнивать с ними не могу догадаться?
Или же здесь вообще стоит использовать while, а может и цикл в цикле?
Помогите пожалуйста,спасибо!
Решение задачи: «Найти количество промежутков постоянства среди чисел, введенных с клавиатуры»
textual
Листинг программы
#include <stdio.h>
#define false 0
#define true 1
#define bool char
int main()
{
int input, // прочтённое число
prev_num = 0x80000000, // предыдущее число
dup_count = 0; // количество промежутков
bool in_dup = false; // мы внутри промежутка
/* читаем числа со стандартного ввода до ошибки (не число, например) *
* или до конца файла (Ctrl+Z если поток идёт с терминала) */
while( scanf( "%d", &input ) && !feof( stdin ) )
{
if( prev_num == input ) // если предыдущее число равно только что прочтённому
in_dup = true; // то мы внутри промежутка
else if( in_dup ) // если предыдущее число НЕ равно только что прочтённому И мы внутри промежутка
{
in_dup = false; // мы больше не внутри промежутка
dup_count++; // увеличить счётчик промежутков
}
prev_num = input;
}
if( in_dup ) dup_count++;
printf( "%d", dup_count );
return 0;
}