Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/244: Рейтинг темы: голосов - 244, средняя оценка - 4.60
 Аватар для King_IgorEfimoV
1 / 1 / 0
Регистрация: 18.04.2011
Сообщений: 9

Определить разрядность числа

05.07.2011, 08:25. Показов 49654. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, написал функцию для определения разрядности числа, однако отказывается работать.
Подправте кто соблаговолит, либо предложите альтернативный вариант.
C++
1
2
3
4
5
6
7
8
9
10
int searchrazryad(long int N)
{
int razryad=0;
for (N%10>10;)
    N/10;
        razryad+=1;
        printf("Kolichestvo razrayadov = %d", &razryad);
 
return razryad;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.07.2011, 08:25
Ответы с готовыми решениями:

Определить разрядность числа
Не получается решить задачи.... 1)Дано целое число. Если оно является однозначным, вывести число 1, если оно является двузначным, вывести...

Определить разрядность десятичного числа
2.Программа ждет ввода числа и в зависимости от количества цифр в числе выдает сообщение об их разрядности: трехзначное, пятизначное и т.д.

Определить разрядность целого числа, использовать битовый сдвиг вправо.Подсчитать количество единичных разрядов,
Определить разрядность целого числа, использовать битовый сдвиг вправо. Подсчитать количество единичных разрядов,использовать битовый...

13
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
05.07.2011, 08:30
Ну хоть книжку-то почитай, как на С++ пишется...
C++
1
2
3
4
5
int i = 0; 
while(N>0)
{ N = N / 10; ++i;
}
cout << i << endl;
1
 Аватар для King_IgorEfimoV
1 / 1 / 0
Регистрация: 18.04.2011
Сообщений: 9
05.07.2011, 08:32  [ТС]
не подскажите еще случаем, как это в виде функции оформить? ( .h )
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
05.07.2011, 08:38
ValeryLaptev, а как же отрицательные числа?
C++
1
2
3
4
5
6
size_t capacity(int n){
    size_t i = 0;
    for (; n ; n /= 10)
        ++i;
    return i;
}
3
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 5
10.11.2015, 13:48
все работает, определяет разрядность 32 разрядного числа и делит и находит (2^30)/x


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
57
58
59
60
61
62
int x=1024; 
int a=x; 
int n=0; 
int b=0; 
int sum=0; 
int c=1; 
int sum2=0; 
 
 
 
 
if((16)>0) 
{ 
a=(16); 
n=n+16; 
} 
if((8)>0) 
{ 
a=(8); 
n=n+8; 
} 
if((4)>0) 
{ 
a=(4); 
n=n+4; 
} 
if((2)>0) 
{ 
a=(2); 
n=n+2; 
} 
if((1)>0) 
{ 
a=(1); 
n=n+1; 
} 
if(a==1) 
{ 
a=(1); 
n=n+1; 
} 
 
b=(30-n); 
c=(30-n); 
 
for(int i=0;i<(30-n);i++) 
{ 
 
if(1073741824-(sum+b)>0) 
{ 
sum=b+sum; 
sum2=c+sum2; 
} 
 
b=1; 
c=1; 
 
} 
 
 
System.out.println(sum2); 
System.out.println(n);
Добавлено через 28 минут
будем добавлять до миллиона скажем
14 - 0 сумма 999 982
28 - 0 сумма 999 982
56 - 1 сумма 999 982
112-0 сумма 999 926
224-0 сумма 999 926
448-0 сумма 999 926
896 -0 сумма 999 926
1792-0 сумма 999 926
3584 -1 сумма 996342 + 3584 = 999 926
7168 -1 сумма 989 174+7168 = 996 342
14 336 - 1 сумма 974 838+14 336 = 989 174
28 672 -0
57 334 - 1 сумма 917 504+57 334=974 838
114 688 - 0
229 376 - 0
458 752 - 0 сумма 917 504 так как 917 504+458 752 больше миллиона
917 504 - 1 сумма 917 504
1 835 008 - 0 число уже больше милиона сумма 0

итак смотрите снизу вверх
получаем число
10001011100000100 - вот такое вот число
переведем его из двоичного в десятиричное
получили число 71 428
и теперь если умножить 71 428 на 14 получим 999 992
с точностью до шестого знака
и при таких вычислениях мы не применяли умножений только суммы
и разности
0
77 / 13 / 11
Регистрация: 23.10.2015
Сообщений: 83
10.11.2015, 15:15
к слову самый быстрый способ узнать число десятичных цифр -- это сравнить по-очереди с числами 9, 99, 999, 9999... Если речь не идет о каких-то специфических процессорах
0
Dimension
595 / 463 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
10.11.2015, 15:23
спустя 4 года британские ученые нашли ответ на вопрос King_IgorEfimoV

Добавлено через 1 минуту
Цитата Сообщение от ishellstrike Посмотреть сообщение
к слову самый быстрый способ узнать число десятичных цифр
думаю взять десятичный логарифм от числа быстрее
0
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 5
10.11.2015, 16:04
Вобщето нет , для 32 разрядного числа как видишь 6 проверок
а для 64 разрядного будет 7
посмотри внимательнее этот способ куда быстрее чем проверять 9 , 99 ...
так как у 64 разрядного числа уже 19 знаков , а значит надо будет целых 19 проверок
в то время как в моем случае это будет всего 7

Добавлено через 1 минуту
да и не всегда нужно проверять разрядность именно десятичного, чаще нужно проверить именно двоичную разрядность

Добавлено через 12 минут
ты даже не обратил внимание на тот факт что тут произведено деление 16 разрядного числа помещенного в 32 разрядное
1 умножение +100 сумм = 132 суммы
16*16=256 т.е. разница в 2 и больше раз, да и точность в 32 разряда не малая
для простых процессоров таких как на видеокарте это ускорит паралельное деление в 2 раза для 32 разрядных
чисел где применяется только 16 разрядов
А если взять 64 разрядный процессор там 20 знаков есть место для шага
Число сумм возростет вдвое витоге это будет 164 суммы для 32 разрядов из 64
а 32*32 = 1024
1024/164 = 6.24 раз ускориться, это огромные числа с огромной точностью и в 6 раз быстрее
0
166 / 69 / 17
Регистрация: 22.03.2011
Сообщений: 196
10.11.2015, 16:30
King_IgorEfimoV,
C++
1
cout << to_string(abs(number)).length() << endl;
2
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 5
10.11.2015, 16:34
да кстати я чета перебрал с суммами где их и не надо было
я еще подускорил алгоритм
Java
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
57
58
59
60
61
62
63
int x=23876;
        int a=x;
        int n=0;
        int b=0;
        int sum=0;
        int c=1;
        int sum2=0;
        int k;
        
        
        
 
        if((a>>16)>0)
        {
        a=(a>>16);  
        n=n+16;
        }
        if((a>>8)>0)
        {
        a=(a>>8);   
        n=n+8;
        }
        if((a>>4)>0)
        {
        a=(a>>4);   
        n=n+4;
        }
        if((a>>2)>0)
        {
        a=(a>>2);   
        n=n+2;
        }
        if((a>>1)>0)
        {
        a=(a>>1);   
        n=n+1;
        }
        if(a==1)
        {
        a=(a>>1);   
        n=n+1;
        }
        
        b=x<<(30-n);
        c=c<<(30-n);
        
        for(int i=0;i<(30-n);i++)
        {
            
        if(1073741824-(k=sum+b)>0)  
        {
        sum=k;  
        sum2=c|sum2;
        }   
        
        b=b>>1; 
        c=c>>1;
        
        }
        
        
        System.out.println(sum2);
        System.out.println(n);
0
77 / 13 / 11
Регистрация: 23.10.2015
Сообщений: 83
10.11.2015, 16:51
Bogdan1986, Dimension, а вот и не быстрее
0
Dimension
595 / 463 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
10.11.2015, 17:08
ishellstrike, статья с 13 минусами меня не впечатляет
0
77 / 13 / 11
Регистрация: 23.10.2015
Сообщений: 83
10.11.2015, 17:20
Dimension, в таком случае рекомендую самостоятельные тесты
0
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 5
10.11.2015, 18:21
если ты хочешь только разрядность найти а 1/x не нужен то тебе только вот эта часть кода нужна
Java
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
int x=23876;
int a=x;
int n=0;
 
 
 
 
 
if((16)>0)
{
a=(16); 
n=n+16;
}
if((8)>0)
{
a=(8); 
n=n+8;
}
if((4)>0)
{
a=(4); 
n=n+4;
}
if((2)>0)
{
a=(2); 
n=n+2;
}
if((1)>0)
{
a=(1); 
n=n+1;
}
if(a==1)
{
a=(1); 
n=n+1;
}
 
 
 
 
 
 
System.out.println(n);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.11.2015, 18:21
Помогаю со студенческими работами здесь

Как определить 64/32 разрядность ОС'и
Добрый день, пишу игровой движок на С++ с использованием OpenGL/GLFW. Мне нужно, что при запуске движок проверял разрядность ОС'и, и если...

Разрядность(нумерация) элементов числа
Я написал такую вот прогу: #include&lt;iostream&gt; using namespace std; void main() { int a=0, i, n, s; cin&gt;&gt;n; ...

Задать разрядность выводимого числа
Итак, дана программа, результатом работы которой есть вывод в консоль массива чисел. Числа в массиве либо двухзначные, либо трехзначные....

Определить разрядность целых беззнаковых типов компьютера
Определите разрядность целых беззнаковых типов компьютера, на котором вы выполняете программу. Хэлп!

Как определить разрядность .EXE или .DLL?
Как определить разрядность .EXE или .DLL? WINAPI функций вроде для етого нет. Я делаю сортировщик dll файлов. Остановился на том, што...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: показать затраченные материалы за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В качестве. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru