Найти количество промежутков постоянства среди чисел, введенных с клавиатуры - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Друзья,совсем с недавних пор изучаю Си, и хотел попросить помощи в решении следующей задачи: Нужно найти кол-во промежутков постоянства среди чисел, введенных с клавиатуры. Это нужно сделать без помощи массивов и функций, имея только циклы и условия. Я не понимаю, как сделать, чтобы он считал эти промежутки. Пусть идет ряд чисел 5 1 2 2 4 3 3 3 7 Вводимые числа я задал переменной а. Что нужно сделать дальше? Если бы у нас только 2 числа шли подряд, мы бы записали это условие в цикле и поставили бы счетчик, например k++ . Где k - то самое количество промежутков, но если будет 3 числа подряд, он считает там как 2 промежутка и т.д. Можно задать первые 2 или 1 число из вводимых еше до цикла, а цикл for начать с i=2 , но что делать дальше?Как сравнивать с ними не могу догадаться? Или же здесь вообще стоит использовать while, а может и цикл в цикле? Помогите пожалуйста,спасибо!

Решение задачи: «Найти количество промежутков постоянства среди чисел, введенных с клавиатуры»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. #define false 0
  4. #define true  1
  5. #define bool  char
  6.  
  7. int main()
  8. {
  9.     int input,                   // прочтённое число
  10.         prev_num = 0x80000000,   // предыдущее число
  11.         dup_count = 0;           // количество промежутков
  12.  
  13.     bool in_dup = false;         // мы внутри промежутка
  14.  
  15.    /* читаем числа со стандартного ввода до ошибки (не число, например) *
  16.     * или до конца файла (Ctrl+Z если поток идёт с терминала)           */
  17.     while( scanf( "%d", &input ) && !feof( stdin ) )
  18.     {
  19.         if( prev_num == input )   // если предыдущее число равно только что прочтённому
  20.             in_dup = true;        // то мы внутри промежутка
  21.         else if( in_dup )         // если предыдущее число НЕ равно только что прочтённому И мы внутри промежутка
  22.         {
  23.             in_dup = false;       // мы больше не внутри промежутка
  24.             dup_count++;          // увеличить счётчик промежутков
  25.         }
  26.  
  27.         prev_num = input;
  28.     }
  29.  
  30.     if( in_dup ) dup_count++;
  31.  
  32.     printf( "%d", dup_count );
  33.  
  34.     return 0;
  35. }

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


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

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

5   голосов , оценка 4.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы