Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
lolpop
0 / 0 / 0
Регистрация: 29.04.2015
Сообщений: 14
1

Найти длину самой длинной последовательности единиц

14.06.2015, 15:31. Просмотров 496. Ответов 2
Метки нет (Все метки)

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

Найти длину самой длинной последовательности одинаковых элементов массива
Дан целочисленный массив A размера N, подсчитать длину самой длинной последовательности одинаковых...

Найти длину самой длинной последовательности одинаковых элементов в массиве
Нужно написать программу на языке Си, которая подсчитывает длину самой длинной последовательности...

Определить длину самой длинной последовательности подряд идущих элементов массива, равных нулю
Помогите найти ошибку в коде. При вводе значений элементов массива, ну например (012300120001) - 12...

Определить длину самой длинной цепочки элементов файла
11. Файл состоит из действительных чисел . Чтобы определить размер файла был самый длинный цепочка...

Вывести длину самой длинной цепочки чисел в массиве
Добрый вечер. Дан одномерный массив размерностью n. Вводится с клавиатуры числа. Необходимо...

2
eledev
55 / 55 / 39
Регистрация: 19.03.2015
Сообщений: 167
14.06.2015, 16:29 2
у вас не рабочий код. выражение N = N / 2 нужно вывести из условия.
рабочий ниже
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
#include <Windows.h>
#include <locale.h>
void main (void)
{
 setlocale(0,"russian"); 
 unsigned int N;
 int i = 0;
 int max = 0;
 printf("Введите число:");
 scanf("%d",&N);
 while(N != 0) 
 {
    if(N % 2)  /* проверяет правый бит. если 1 то увеличить счетчик*/
    {
        i++;
    } else i = 0; /* иначе обнулить счетчик */
    
    if(i > max) /* еси счетчик достиг большего значения чем max то загрузить мах новым значением */
    {
      max = i;
    }
    N = N / 2; /* сместить число на 1 бит в право */
 }
 printf("%d ",max);
 system("pause");
}
1
kolobok919
-4 / 2 / 3
Регистрация: 30.05.2015
Сообщений: 37
14.06.2015, 16:35 3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <stdio.h>
#include <stdlib.h>
 
unsigned max(unsigned a, unsigned b)
{
    return a >= b ? a : b;
}
 
void ShowBinary(unsigned N)
{
    unsigned mask = 1 << 31;
    bool pop_bit;
 
    for(int i = 0; i < 32; i++)
    {
        printf("%c", mask & N ? '1' : '0');
        N <<= 1;
    }
 
    printf("\n");
}
 
unsigned MaxBitLength(unsigned N)
{
    unsigned result = 0;
    unsigned counter = 0;
    bool pop_bit;
 
    while(N)
    {
        pop_bit = N & 1;
        N >>= 1;
 
        if(pop_bit) counter++;
        else
        {
                result = max(result, counter);
                counter = 0;
        }
    }
 
    return result;
}
 
void main()
{
    unsigned N;
 
    printf("enter value: ");
    scanf("%u", &N);
 
    ShowBinary(N);
    printf("%u\n", MaxBitLength(N));
 
    system("pause");
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2015, 16:35

Определить длину самой длинной подстроки из подряд стоящих букв «и»
Введена строка символов. Определить длину самой длинной подстроки из подряд стоящих букв «и».

Найти длину самой длиной последовательности подряд идущих элементов равных нулю
Задан числовой масив . Найти длину самой длиной последовательности подряд идущих элементов равных...

Нахождение самой длинной последовательности чисел в тексте
Добрый день :) Передо мной стоит такая задача: найти самую длинную последовательность чисел в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru