Найти длину самой длинной последовательности единиц - C (СИ)

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

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

Здравствуйте, по заданию нужно "Ввести целое число N. Найти длину самой длинной последовательности единиц в его двоичном представлении" Подскажите как программа ищет эту последовательность единиц?
Листинг программы
  1. #include <stdio.h>
  2. #include <Windows.h>
  3. #include <locale.h>
  4. void main (void)
  5. {
  6. setlocale(0,"russian");
  7. unsigned int N;
  8. int i = 0;
  9. int max = 0;
  10. printf("Введите число:");
  11. scanf("%d",&N);
  12. while(N != 0)
  13. {
  14. if(N % 2)
  15. {
  16. i++;
  17. }
  18. else i = 0;
  19. if(i > max)
  20. {
  21. max = i;
  22. N = N / 2;
  23. }
  24. }
  25. printf("%d ",max);
  26. system("pause");
  27. }

Решение задачи: «Найти длину самой длинной последовательности единиц»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <Windows.h>
  3. #include <locale.h>
  4. void main (void)
  5. {
  6.  setlocale(0,"russian");
  7.  unsigned int N;
  8.  int i = 0;
  9.  int max = 0;
  10.  printf("Введите число:");
  11.  scanf("%d",&N);
  12.  while(N != 0)
  13.  {
  14.     if(N % 2)  /* проверяет правый бит. если 1 то увеличить счетчик*/
  15.     {
  16.         i++;
  17.     } else i = 0; /* иначе обнулить счетчик */
  18.    
  19.     if(i > max) /* еси счетчик достиг большего значения чем max то загрузить мах новым значением */
  20.     {
  21.       max = i;
  22.     }
  23.     N = N / 2; /* сместить число на 1 бит в право */
  24.  }
  25.  printf("%d ",max);
  26.  system("pause");
  27. }

Объяснение кода листинга программы

В этом коде:

  1. #include , #include , #include - подключают необходимые библиотеки для работы с консолью, системой и вводом/выводом данных.
  2. void main (void) - объявляет функцию main, которая является точкой входа в программу.
  3. setlocale(0,russian); - задает русскую локаль для работы с консолью.
  4. unsigned int N; - объявляет переменную N типа unsigned int (беззнаковое целое) для хранения числа, введенного пользователем.
  5. int i = 0;, int max = 0; - объявляют переменные i и max типа int (целое) для хранения счетчика и максимального значения последовательности соответственно.
  6. printf(Введите число:); - выводит сообщение с просьбой ввести число.
  7. scanf(%d,&N); - считывает введенное пользователем число в переменную N.
  8. while(N != 0) - организует цикл, который будет выполняться до тех пор, пока N не станет равным нулю.
  9. if(N % 2) - проверяет правый бит числа N. Если он равен 1, то увеличивается счетчик i.
  10. i++; - увеличивает значение счетчика i на 1.
  11. if(i > max) - проверяет, не превышает ли текущее значение счетчика i максимальное значение, хранящееся в переменной max.
  12. max = i; - обновляет значение переменной max, если текущее значение счетчика i больше.
  13. N = N / 2; - сдвигает число N вправо на один бит.
  14. printf(%d,max); - выводит максимальное значение последовательности.
  15. system(pause); - приостанавливает выполнение программы до тех пор, пока пользователь не нажмет любую клавишу.
  16. В результате выполнения программы на экран будет выведено максимальное значение последовательности.

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


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

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

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

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

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

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