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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создать два объекта и определить минимальное значение из чисел http://www.cyberforum.ru/cpp-beginners/thread164452.html
Описать класс , который хранит значение двух чисел и функцию для определения минимального из них , числа должны быть с ограниченым доступом , функция с открытым доступом . Создать два объекта и...
C++ Классы: круг, квадрат, прямоугольник Описать классы соответсвующие кругу , квадрату и прямоугольнику . В каждом из классов реализовать функцию подсчета площади фигуры , сравнить площади фигур какая из них больше . http://www.cyberforum.ru/cpp-beginners/thread164451.html
C++ Изменение одной буквы на другое количество
задали написать программу которая заменяет одну букву на другую но одну это я написал но хочется сделать так чтобы одна буква заменялась на 2,3 и более (потипа ) Помогите пожалуйста воплотить...
C++ Отладка программы
Помогите пожалуйста сделать программу корректной. В общем из трех чисел x, y, z нужной найти максимальное попробовал следующее, но чего то не выходит #include <iostream> inline int max(int x, int...
C++ Потоки http://www.cyberforum.ru/cpp-beginners/thread164426.html
Как именно применять многозадачность языка С++? Я тут где то прочитал что это потоки, но там не указывался метод использования. Пример: Допустим работает приложение (консоль) Идет выполнение...
C++ Структурные типы в Borland C Помогите доделать,а то у меня ошибки вылазят #include<stdio.h> #include<conio.h> #include<iostream.h> void main() { struct date { подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
3050 / 1695 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
09.09.2010, 11:17
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
85
86
87
88
89
90
//////////////////////////////////////////////////////////////////////////////
//  написать программу которая будет переводить число из одной произвольной 
//  системы счисления в другую.
//////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <string>
 
typedef std::string  T_str;
//////////////////////////////////////////////////////////////////////////////
int symb_to_dig(char symb)
{
    if('0' <= symb && symb <= '9')
    {
        return symb - '0';
    }
    if('a' <= symb && symb <= 'z')
    {
        return symb - 'a' + 0xa;
    }
    return 0;
}
//////////////////////////////////////////////////////////////////////////////
char dig_to_symb(int dig)
{
    if(0 <= dig && dig <= 9)
    {
        return dig + '0';
    }
    const int lett_dig_a = 10;
    const int lett_dig_z = 'z' - 'a' + lett_dig_a;
    if(lett_dig_a <= dig && dig <= lett_dig_z)
    {
        return dig - lett_dig_a + 'a';
    }
    return '?';
}
//////////////////////////////////////////////////////////////////////////////
T_str  transform(T_str num_str, int begin_radix, int end_radix)
{    
    int val                   = 0;    
    int begin_radix_in_order  = 1;
 
    for(T_str::const_reverse_iterator  rev_dig_it = num_str.rbegin(); 
        rev_dig_it != num_str.rend(); ++rev_dig_it)
    {
        val += symb_to_dig(tolower(*rev_dig_it)) * begin_radix_in_order;
        begin_radix_in_order *= begin_radix;
    }
 
    T_str  res_str;
    while(val)
    {        
        res_str.insert(0, 1, dig_to_symb(val % end_radix));     
        val /= end_radix;
    }
    return  res_str;
}
//////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale("")); 
    for(;;)
    {
        std::cout << std::endl
                  << std::endl
                  << std::endl
                  << "Число в исходной системе счисления:   ";        
        T_str num_str;
        std::cin >> num_str;        
 
        int n1;
        do
        {
            std::cout << "Основание исходной системы счисления: ";        
            std::cin >> n1;    
        }while(n1 < 2);
 
        int n2;
        do
        {
            std::cout << "Основание целевой системы счисления:  ";    
            std::cin >> n2;    
        }while(n2 < 2);
 
        std::cout << std::endl
                  << "Число в целевой системе счисления:    "
                  << transform(num_str, n1, n2)
                  << std::endl;     
    }
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru