Найти количество промежутков постоянства среди чисел, введенных с клавиатуры - 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;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.8 из 5
Похожие ответы