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

Перевод десятичного числа в шестнадцатеричное - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 57, средняя оценка - 4.95
Alex_lt
0 / 0 / 0
Регистрация: 21.05.2013
Сообщений: 25
28.06.2013, 00:19     Перевод десятичного числа в шестнадцатеричное #1
если не трудно, помогите с прогой, которая преобразует введенное десятичное число в шестнадцатеричное.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
abit
 Аватар для abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
28.06.2013, 00:22     Перевод десятичного числа в шестнадцатеричное #2
манипулятор hex не катит?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
using namespace std;
 
 
 
int main() {
    
    int x;
    cin>>x;
    cout<<"0x"<<hex<<x<<endl;
    cin>>x;
 
    return 0;
}
Alex_lt
0 / 0 / 0
Регистрация: 21.05.2013
Сообщений: 25
28.06.2013, 00:31  [ТС]     Перевод десятичного числа в шестнадцатеричное #3
вроде катит) но мне, честно говоря, не очень понятно

Добавлено через 3 минуты
возможно это сделать при помощи неких стандартных операций? здесь вроде норм, но, думаю, могут докопаться, потому что мы еще не сталкивались с такой фишкой
abit
 Аватар для abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
28.06.2013, 00:40     Перевод десятичного числа в шестнадцатеричное #4
скорее всего и докопаются, потому что вряд ли бы тогда вам задачу ставили
вот написал без манипулятора
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
#include <iostream>
#include <string>
 
using namespace std;
 
string inttohex(int a)
{
    string tmp("");
    do
    {
        int r(a%16);
        if (r>9) {r+=(int)'A'-10;}
        else  {r+=(int)'0';};
        tmp=(char)r+tmp;
        a/=16;
    } while (a);
    return tmp;
}
 
int main() {
    
    int x;
    cin>>x;
    
    cout<<0x<<inttohex(x);
    
    cin>>x;
 
    return 0;
}
Alex_lt
0 / 0 / 0
Регистрация: 21.05.2013
Сообщений: 25
28.06.2013, 00:47  [ТС]     Перевод десятичного числа в шестнадцатеричное #5
25:11 invalid suffix "x" on integer constant
такая штука в 25 строке
abit
 Аватар для abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
28.06.2013, 00:50     Перевод десятичного числа в шестнадцатеричное #6
Цитата Сообщение от Alex_lt Посмотреть сообщение
25:11 invalid suffix "x" on integer constant
такая штука в 25 строке
ой, да, конечно

C++
1
cout<<"0x"<<inttohex(x);
так правильно

я просто подобные "программы" пишу сходу, не проверяя в компиляторе, поэтому бывают такие ляпы, когда торопишься
Alex_lt
0 / 0 / 0
Регистрация: 21.05.2013
Сообщений: 25
28.06.2013, 00:54  [ТС]     Перевод десятичного числа в шестнадцатеричное #7
хорошо, спасибо большое)
Alex_lt
0 / 0 / 0
Регистрация: 21.05.2013
Сообщений: 25
30.06.2013, 17:39  [ТС]     Перевод десятичного числа в шестнадцатеричное #8
Цитата Сообщение от abit Посмотреть сообщение
скорее всего и докопаются, потому что вряд ли бы тогда вам задачу ставили
вот написал без манипулятора
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
#include <iostream>
#include <string>
 
using namespace std;
 
string inttohex(int a)
{
    string tmp("");
    do
    {
        int r(a%16);
        if (r>9) {r+=(int)'A'-10;}
        else  {r+=(int)'0';};
        tmp=(char)r+tmp;
        a/=16;
    } while (a);
    return tmp;
}
 
int main() {
    
    int x;
    cin>>x;
    
    cout<<0x<<inttohex(x);
    
    cin>>x;
 
    return 0;
}

Для чего А и 0 в апострофах? Я просто далеко не профи еще
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5436 / 2560 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
30.06.2013, 17:56     Перевод десятичного числа в шестнадцатеричное #9
Цитата Сообщение от Alex_lt Посмотреть сообщение
Для чего А и 0 в апострофах? Я просто далеко не профи еще
Апострофы обозначают что между ними выводится одиночный символ.
'A' - символ заглавной буквы А
'0' - символ цифры ноль
'╜' - символ какой-то неведомой фигни

И если в апострофы заключаются одиночные символы, то для работы с последовательностями символов - строками используются кавычки.
"АААА"
"Мама мыла раму"
"Ктулху, подай патроны"

В данном случае
C++
1
(int)'A'-10;
имеется ввиду, что берется код символа А (статическое сишное приведение типа) и вычитается из этого кода целое число десять.
Alex_lt
0 / 0 / 0
Регистрация: 21.05.2013
Сообщений: 25
30.06.2013, 18:54  [ТС]     Перевод десятичного числа в шестнадцатеричное #10
Ок, просто было непонятно, почему одиночные
kozlik_kozlik
7 / 11 / 0
Регистрация: 01.08.2012
Сообщений: 99
12.08.2015, 16:37     Перевод десятичного числа в шестнадцатеричное #11
Нельзя ли сразу сделать переменную r типа char и обойтись без приведений?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.08.2015, 17:52     Перевод десятичного числа в шестнадцатеричное
Еще ссылки по теме:

C++ Перевод десятичного числа в двоичное число
Перевод десятичного числа в двоичное C++
Перевод длинного десятичного числа в шестнадцатиричное C++

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

Или воспользуйтесь поиском по форуму:
MicM
 Аватар для MicM
820 / 487 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
12.08.2015, 17:52     Перевод десятичного числа в шестнадцатеричное #12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
 
int main()
{
  std::string digits[16] = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
  int dec;
  std::cin >> dec;
  std::string hex;
  do
  {
    hex.insert (0, digits[dec % 16]);
    dec /= 16;
  }
  while (dec!=0);
  std::cout << hex << "\n";
}
Yandex
Объявления
12.08.2015, 17:52     Перевод десятичного числа в шестнадцатеричное
Ответ Создать тему
Опции темы

Текущее время: 22:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru