Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
SergeyNewer
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 6
#1

Представление числа в 16-ричном виде - C++

03.07.2015, 19:06. Просмотров 1135. Ответов 8
Метки нет (Все метки)

Как это звучит на русском?
C++
1
2
3
4
                e=C%16;
        d=C/16;
        HEX_A=array_m[e]+HEX_A;
        C=d;
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2015, 19:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Представление числа в 16-ричном виде (C++):

Вывод в 16-ричном виде - C++
у меня допустим есть переменная uint8_t p; для вывода в десятичной системе счисления я делаю так: printf("\np = "); for (i...

представление числа в виде суммы 3 и 5 - C++
Известно что любое целое положительное число, которое больше 7, можно представить суммой троек и пятерок (37=4*3 + 5*5). Произвольную...

Представление числа N в виде всевозможных сумм K - C++
Составить программу, которая печатает все различные представление числа N в виде всевозможных сумм K натуральных чисел (N, K-вводятся,...

Найти представление числа S в виде суммы слагаемых из множества - C++
В некотором государстве в обращении находятся банкноты определенных номиналов. Национальный банк хочет, чтобы банкомат выдавал любую...

Как получить разницу адресов ссылок в 16-ричном виде? - C++
Допустим есть массив какого-то искусственного типа данных. Нужно получить и вывести, насколько отличаются АДРЕСА его элементов в...

Получить двоичное представление числа р в виде последовательности нулей и единиц - C++
Дано натуральное число р. Получить двоичное представление числа р в виде последовательности а0, ...,аn нулей и единиц такой, что р=аn∙2n+…+...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Rius
Эксперт .NET
2568 / 1764 / 401
Регистрация: 25.05.2015
Сообщений: 5,871
Записей в блоге: 8
Завершенные тесты: 4
03.07.2015, 19:26 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
1. получить остаток от деления C на 16.
Если C - целое, можно было e = C & 0x0f;
2. Получаем целую часть от деления на 16.
Аналогично, если C - целое, можно было d = C >> 4;
3. К чему-то прибавляется значение из массива, соответствующее e из пункта 1.
4. В C заносится число полученное в пункте 2.

Должен быть ещё код. Откуда берётся C, что такое HEX_A и array_m.
1
Рыжий Лис
Просто Лис
308 / 255 / 70
Регистрация: 17.05.2012
Сообщений: 1,050
Записей в блоге: 4
03.07.2015, 19:31 #3
Скорей всего перевод числа из 10-й в 16-ю систему исчисления.
C++
1
2
3
4
        e=C%16;//берём одну цифру справа
        d=C/16;//и откидываем последнюю цифру
        HEX_A=array_m[e]+HEX_A;
        C=d;
1
Rius
Эксперт .NET
2568 / 1764 / 401
Регистрация: 25.05.2015
Сообщений: 5,871
Записей в блоге: 8
Завершенные тесты: 4
03.07.2015, 19:33 #4
А, если HEX_A - это строка, а array_m - массив символов из 16-ричной системы (0...f).
Новые символы, старшие, вставляются в начало строки.
1
Рыжий Лис
Просто Лис
308 / 255 / 70
Регистрация: 17.05.2012
Сообщений: 1,050
Записей в блоге: 4
03.07.2015, 19:33 #5
Проще записать так, если переменная d больше нигде не используется:
C++
1
2
3
        e=C%16;
        C/=16;
        HEX_A=array_m[e]+HEX_A;
1
SergeyNewer
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 6
03.07.2015, 20:14  [ТС] #6
Вот полны код - как я могу его обьяснить словами что здесь происходит???
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
char array_m[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
int C, d, e;
    std:: string HEX_A="", HEX_B="";
srand(time(NULL));
C=rand()%101;
cin >> HEX_B;
d=C;
do
    {
        e=C%16;
        d=C/16;
        HEX_A=array_m[e]+HEX_A;
        C=d;
    }
    while(d>=1);
if (HEX_A == HEX_B)
    {
        cout << "Vy vveli vernoe chislo" << endl;
    }
    else
    {
        cout << "Vy vveli nevernoe chislo" << endl;
    }
    return system("pause");
 
[size="1"][color="grey"][I]Добавлено через 1 минуту[/I][/color][/size]
Вот полны код - как я могу его обьяснить словами что здесь происходит???
char array_m[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
int C, d, e;
std:: string HEX_A="", HEX_B="";
srand(time(NULL));
C=rand()%101;
cin >> HEX_B;
d=C;
do
{
e=C%16;
d=C/16;
HEX_A=array_m[e]+HEX_A;
C=d;
}
while(d>=1);
if (HEX_A == HEX_B)
{
cout << "Vy vveli vernoe chislo" << endl;
}
else
{
cout << "Vy vveli nevernoe chislo" << endl;
}
return system("pause");
Добавлено через 9 минут
Rius, помоги расшифровать код,пожалуйста
0
Рыжий Лис
Просто Лис
308 / 255 / 70
Регистрация: 17.05.2012
Сообщений: 1,050
Записей в блоге: 4
03.07.2015, 20:21 #7
Игра в угадайку. Компьютер загадывает число от 0 до 100, а пользователь пытается угадать. Только пользователь должен ввести число в 16-й системе исчисления.

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
char array_m[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
int C, d, e;
std:: string HEX_A="", HEX_B="";
srand(time(NULL));
C=rand()%101;//число от 0 до 100
cin >> HEX_B;//ввод пользователем строки
//далее перевод числа загаданного компьютером в 16-ю СИ
d=C;
do
{
e=C%16;
d=C/16;
HEX_A=array_m[e]+HEX_A;//к строке слева прибавляем символ из массива
C=d;
}
while(d>=1);
if (HEX_A == HEX_B)//и сравниваем строки
{
cout << "Vy vveli vernoe chislo" << endl;
}
else
{
cout << "Vy vveli nevernoe chislo" << endl;
}
return system("pause");
1
SergeyNewer
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 6
03.07.2015, 20:29  [ТС] #8
это понятно примерно меня интересует подробно про это
{
e=C%16;
d=C/16;
HEX_A=array_m[e]+HEX_A;//к строке слева прибавляем символ из массива
C=d;
}
Обьясните пожалуйста
0
Rius
Эксперт .NET
2568 / 1764 / 401
Регистрация: 25.05.2015
Сообщений: 5,871
Записей в блоге: 8
Завершенные тесты: 4
03.07.2015, 20:32 #9
Было число C типа 0x12abcdef.
В цикле оно сдвигается вправо на тетраду. Т.е. 0x12abcdef -> 0x12abcde -> 0x12abcd -> 0x12abc -> 0x12ab -> 0x12a -> 0x12 -> 0x1 -> 0
Попутно, сдвигаемая цифра сохраняется в переменную e.
Используя её в качестве индекса для массива с 16-ричными знаками, формируется строка с текстовым представлением исходного числа в 16-ричном виде.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2015, 20:32
Привет! Вот еще темы с ответами:

Вывести в консоль в виде таблицы значения чисел в 16 и 10-ричном формате - C++
Обьясните пожалуйста задание, и как его можно реализовать, выучили указатели. Задание:–виведення на консоль у вигляді таблиці значень...

Для целого числа найти его представление в виде среднего арифметического квадратов чисел - C++
Заставляют решить такую задачу: Для целого числа N найти его представление в виде среднего арифметического квадратов натуральных чисел....

Нужно чтобы на экран числа выводились в 16-ричном формате - C++
В кратце: пишу CAN-месенджер в принципе он работает, но есть одно НО. Мне нужно чтобы на экран числа выводились в 16-ричном формате. Ниже...

Представление кода в виде функции - C++
Столкнулся с проблемой, сделал код в виде функций, все запускается и вроде бы работает, но как введу значения жму Enter и программа просто...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.07.2015, 20:32
Ответ Создать тему
Опции темы

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