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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 57, средняя оценка - 4.95
Alex_lt
0 / 0 / 0
Регистрация: 21.05.2013
Сообщений: 25
#1

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

28.06.2013, 00:19. Просмотров 9005. Ответов 11
Метки нет (Все метки)

если не трудно, помогите с прогой, которая преобразует введенное десятичное число в шестнадцатеричное.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2013, 00:19     Перевод десятичного числа в шестнадцатеричное
Посмотрите здесь:

Перевод целого десятичного числа в двоичною систему числения C++
C++ Перевод вещественного десятичного числа в любую СС
C++ Перевод десятичного числа в двоичное
C++ Перевод целого десятичного числа в двоичную систему счисления
C++ Перевод десятичного числа во внутреннее представление
C++ Перевод десятичного вещественного числа в новую систему счисления
C++ Перевод отрицательного целого десятичного числа в двоичное
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
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
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
Супер-модератор
Эксперт С++
5589 / 2623 / 239
Регистрация: 01.11.2011
Сообщений: 6,448
Завершенные тесты: 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++ Перевод десятичного числа в двоичное число
Перевод десятичного числа в двоичное C++
Перевод длинного десятичного числа в шестнадцатиричное C++

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

Или воспользуйтесь поиском по форуму:
MicM
821 / 488 / 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     Перевод десятичного числа в шестнадцатеричное
Ответ Создать тему
Опции темы

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