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

Перевод из одной системы счисления в другую - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сравнение чисел в трёхзначном числе http://www.cyberforum.ru/cpp-beginners/thread170653.html
Нужно определить какая из цифр в трёхзначном числе больше первая или последняя?
C++ как сделать аналог split(с#) на с++ помогите разбить строковую ячейку содержащую значение "4 8" на 2 элемента в c# это делает функция split http://www.cyberforum.ru/cpp-beginners/thread170633.html
C++ В С++ программа по вычислению функций
Задали в универе сделать В С++ программу, а я никогда с ним не сталкивался, но так вот,напишите,кто может: "написать программі на языке С++ для расчёта значений х и y по заданным формулам.В первой прогр. использовать для ввода фун-ю scanf, для вывода - printf. Во второй использовать ввод-вывод cin и cout. Определить разность между y и x." Функции: 1-я: y=1-2sin^2*A/1+sin3A 2-я: z=1-tgA/1+tgA...
C++ Деревья, неверный результат
вопрос по деревьям. почему-то выдает адрес ячейки, а не содержимое... почему? #include <iostream> using namespace std; class Tree { int data; Tree *right; Tree *left;
C++ вопрос по switch http://www.cyberforum.ru/cpp-beginners/thread170600.html
cout<<"Введите первую букву имени(Большими буквами)"<<"\n"; cin>>b; switch(b) { case 'А':v1=4; v2=8;break; case 'В':v1=2; v2=5;break; case 'И':v1=0;break; case 'К':v1=1;
C++ Проверить есть ли в массиве одинаковые числа Как можно проверить есть ли в массиве числа с одинаковым значением? числа вводяться с клавиатуры. подробнее

Показать сообщение отдельно
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
29.09.2010, 23:45     Перевод из одной системы счисления в другую
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <string>
#include <vector>
#include <iostream>
#include <cmath>
 
using namespace std;
 
size_t getnum(const string& in, size_t base)
{
    string numbers="0123456789ABCDEF";
    size_t n=0;
    for(size_t i=0;i<in.length();i++)
    {
        size_t j=in.length()-1-i;
        size_t m=numbers.find(in[j]);
        n+=m*(size_t)pow((double)base, (double)i);
    }
    return n;
}
 
string convert(size_t in, size_t base)
{
    string numbers="0123456789ABCDEF";
    string out;
    while(in)
    {
        size_t n=in%base;       
        out.insert(0, 1, numbers[n]);
        in/=base;
    }
    return out;
}
 
string convert(const string& val, size_t from_base, size_t to_base)
{
    return convert(getnum(val, from_base), to_base);
}
 
string my_convert(string val, size_t to_base)
{   
    char base='X';  
    char type=val[val.length()-1];
    val.resize(val.length()-1);
    
    switch(to_base)
    {
    case 2:
        base='B';
        break;
    case 16:
        base='H';
        break;
    case 8:
        base='O';
        break;
    case 10:
        base='D';
        break;
    }
 
    switch(type)
    {
    case 'B':
        return convert(val, 2, to_base)+base;
        break;
    case 'H':
        return convert(val, 16, to_base)+base;
        break;
    case 'O':
        return convert(val, 8, to_base)+base;
        break;
    case 'D':
        return convert(val, 10, to_base)+base;
        break;
    }
    return "";
}
 
int main()
{
    string n="10D";
    cout<<my_convert(n, 2)<<endl;
    system("pause");
}
Добавлено через 27 секунд
Можно сократить код, но пока лень.
 
Текущее время: 02:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru