Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/39: Рейтинг темы: голосов - 39, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 20.04.2011
Сообщений: 12

Конвертор десятичного числа в шестнадцатиричное с алгоритмом преобразования

20.04.2011, 02:00. Показов 7738. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Конвертор десятичного числа в шестнадцатиричное с алгоритмом преобразования (без простого вывода числа в шестнадцатиричной)... помогите пожалуйста очень надо, я полный новичек, хотелось бы посмотреть как может выглядеть работающая программа... алгоритм по идее такой:

1. Делим десятичное число А на 16. Частное Q запоминаем для следующего шага, а остаток a записываем как младший бит шестнадцатеричного числа.
2. Если частное q не равно 0, принимаем его за новое делимое и повторяем процедуру, описанную в шаге 1. Каждый новый остаток записывается в разряды шестнадцатеричного числа в направлении от младшего бита к старшему.
3. Алгоритм продолжается до тех пор, пока в результате выполнения шагов 1 и 2 не получится частное Q = 0 и остаток a меньше 16.

Как реализовать? заранее благодарен...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.04.2011, 02:00
Ответы с готовыми решениями:

Преобразование десятичного числа в шестнадцатиричное
Как написать функцию которая преобразут десятиричные числа в шеснадцатиричные?

Преобразование десятичного числа в шестнадцатиричное
Нашел на форуме вот такую программку: string inttohex(int a) { string tmp(""); do { int r(a%16); ...

Перевод длинного десятичного числа в шестнадцатиричное
Здравствуйте. Очень интересует меня вопрос: как перевести большое число (до 2^128), представленное в виде строки из 10-ричной СС в число...

8
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
20.04.2011, 13:24
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
#include <vcl.h>
#include <iostream.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{
 char hz[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
 unsigned long A=32767;
 String HEX="", RHEX="";
 unsigned long q=(A/16);
 unsigned long a=(A%16);
 while (q)
 {
  a=A%16;
  q=(A/16);
  HEX=HEX+hz[a];
  A=q;
 }
 for(unsigned long i=HEX.Length();i>0;i--)
 {
  RHEX=RHEX+HEX[i];
 }
 cout << RHEX.c_str();
 return 0;
}
1
0 / 0 / 0
Регистрация: 20.04.2011
Сообщений: 12
20.04.2011, 20:49  [ТС]
Спасибо Вам огромное!

еще вопрос, все переводится правильно, кроме диапазона чисел от 10 до 15 (которые должны быть в результате А, B, C, D, E, F). Как же быть в этом случае?

и еще вопрос: 15 строка: while (q)
это одно и тоже что и если бы я написал while (q!=0)? или не совсем?


а это:
for(unsigned long i=HEX.Length();i>0;i--)
{
RHEX=RHEX+HEX[i];
}
выводит результат в обратной последовательности, насколько я понял?

Заранее огромное спасибо.
0
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
20.04.2011, 21:05
Цитата Сообщение от Весло Посмотреть сообщение
еще вопрос, все переводится правильно, кроме диапазона чисел от 10 до 15 (которые должны быть в результате А, B, C, D, E, F). Как же быть в этом случае?
Чтобы сильно мозг не морщить вставьте вначале проверку
C++
1
if (A<16) RHEX=hz[A];
и на вывод сразу
Цитата Сообщение от Весло Посмотреть сообщение
и еще вопрос: 15 строка: while (q)
это одно и тоже что и если бы я написал while (q!=0)? или не совсем?
Условие в скобках всегда проверяется на 0/1. Если не 0, то выполняется. Поэтому одно и то же
Цитата Сообщение от Весло Посмотреть сообщение
а это:
for(unsigned long i=HEX.Length();i>0;i--)
{
RHEX=RHEX+HEX[i];
}
выводит результат в обратной последовательности, насколько я понял?
Именно так, по алгоритму перевода порядок байт от младших к старшим. Мы же сначала формируем строку путём добавления, а потом переворачиваем её
1
0 / 0 / 0
Регистрация: 20.04.2011
Сообщений: 12
20.04.2011, 21:42  [ТС]
Благодарю Вас еще раз!

и последний вопрос: 26-ая строка:
cout << RHEX.c_str();

c_str() - возвращает указатель на его внутреннее хранилище символов насколько помню, а здесь мы его применяем потому что без него строка результата не будет выводится? правильно?
0
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
21.04.2011, 06:47
Цитата Сообщение от Весло Посмотреть сообщение
и последний вопрос: 26-ая строка:
cout << RHEX.c_str();
Если по простому, то это перевод типа String в массив char[] для вывода
1
 Аватар для kazak
3602 / 2743 / 355
Регистрация: 11.03.2009
Сообщений: 6,303
21.04.2011, 08:14
Дополнительного условия не надо. Просто строки
C++
1
2
unsigned long q=(A/16);
unsigned long a=(A%16);
переделать в
C++
1
2
unsigned long q;
unsigned long a;
0
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
21.04.2011, 11:24
Если оставить просто
C++
1
unsigned long q;
то условие
C++
1
while (q)
может и не выполниться (допустим инициализация 0)
0
 Аватар для kazak
3602 / 2743 / 355
Регистрация: 11.03.2009
Сообщений: 6,303
21.04.2011, 12:37
q=A перед циклом или через do ...while
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.04.2011, 12:37
Помогаю со студенческими работами здесь

Суть преобразования десятичного двоичнокодированного числа
В чем заключается суть преобразования десятичного двоичнокодированного числа в символьный вид?

Алгоритм преобразования десятичного числа в вещественное
Здравствуйте помогите пожалуйста разобрать алгоритм, понимаю что в вещественном числе 32 разряда поэтому счётчик сначала равен 32, а...

Определить функцию преобразования десятичного числа
Определить функцию преобразования десятичного числа n в СС( двоичную, восьмеричную, шестнадцатиричную) с основанием b. Пусть функция...

Как получить шестнадцатиричное число из десятичного?
a:=255; Как получить b:='ff'

7. Написать программу преобразования введенного десятичного числа в восьмеричный формат
Написать программу преобразования введенного десятичного числа в восьмеричный формат циклическая структура


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru