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

Функция перевода в указанную систему счисления

15.02.2020, 09:40. Показов 2501. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.Прошу пожалуйста помощи в написании функции, которая получает в качестве аргументов целое положительное число и систему счисления, в которую это число должно переводится (системы счисления от 2 до 36). Например, при переводе числа 27 в систему счисления 16 должно получиться 1B; 13 в 5-ю - 23.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.02.2020, 09:40
Ответы с готовыми решениями:

Функция перевода восьмеричного числа в двоичную систему счисления
Разработать спецификации и написать функцию для перевода восьмеричного числа в двоичную систему счисления. Ответ сформировать в виде...

Рекурсивная функция для перевода данного натурального числа в заданную систему счисления
Составить рекурсивную функцию для перевода данного натурального числа в р-ичную систему счисления (2<= р<= 9). Только...

Простейший алгоритм перевода числа из 10 системы счисления в 16 ричную систему счисления
Помогите написать самый простой алгоритм перевода из 10 системы счисления в 16 ричную систему счисления! Мне нужен именно самый простенький...

11
Just Do It!
 Аватар для XLAT
4198 / 2653 / 654
Регистрация: 23.09.2014
Сообщений: 8,947
Записей в блоге: 3
15.02.2020, 09:48
Цитата Сообщение от sesitos Посмотреть сообщение
36
а какими символами вы собирается это число записывать?
для счисления по основанию 36 вам понадобится 36 разных символов.
1
 Аватар для sesitos
11 / 11 / 0
Регистрация: 10.11.2018
Сообщений: 201
15.02.2020, 09:57  [ТС]
Я и хочу так 36 разных символов.

Добавлено через 2 минуты
char all [36][2]={"0" и так далее}
0
Just Do It!
 Аватар для XLAT
4198 / 2653 / 654
Регистрация: 23.09.2014
Сообщений: 8,947
Записей в блоге: 3
15.02.2020, 10:21
sesitos,

Вот добавьте ваши символы в таблицу
и функция будет вам генерить любые системы счисления в того диапазона,
до которого есть символы в таблице.
(щас можно до основания 16 это делать)
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
#include <iostream>
#include <string>
 
 
std::string foo(int n, int k)
{   const std::string tab = "0123456789ABCDEF"; ///<<<---добавляйте ваши символы сюда!
    
    if(tab.size() < k)
    {   return "Error: Add symbols into tab!\n";
    }
    
    std::string s;
    
    for(int i = n; n ; n /= k)
    {   int t = n%k;
        s += tab[t];
    }
    for(int i = 0; i < s.size()/2; i++)
    {   std::swap(s[i], s[s.size() - i - 1]);
    }
    
    return s;
}
 
int main()
{   
    int n = 255;
    int k =  16;
    
    /// Тест:
    std::cout << foo(n  , k  ) << "\n";
    std::cout << foo(16 , 16 ) << "\n";
    std::cout << foo(123, 10 ) << "\n";
    std::cout << foo(123, 100) << "\n";
    
    getchar();
    return 0;
}
1
 Аватар для sesitos
11 / 11 / 0
Регистрация: 10.11.2018
Сообщений: 201
15.02.2020, 10:30  [ТС]
Я забыл уточнить,что нужно функциями решение получить
0
Just Do It!
 Аватар для XLAT
4198 / 2653 / 654
Регистрация: 23.09.2014
Сообщений: 8,947
Записей в блоге: 3
15.02.2020, 10:37
Цитата Сообщение от sesitos Посмотреть сообщение
нужно функциями решение получить
а то что?
C++
4
5
6
7
/// foo, которая получает в качестве аргументов целое положительное число и систему счисления:
std::string foo(int n, int k)
{
...
Цитата Сообщение от sesitos Посмотреть сообщение
Я забыл уточнить
ещё раз уточните какими именно функциями вам надо?
0
 Аватар для sesitos
11 / 11 / 0
Регистрация: 10.11.2018
Сообщений: 201
15.02.2020, 10:41  [ТС]
это да,но должна быть функция например void convetacia(int num,int bas){...
0
Just Do It!
 Аватар для XLAT
4198 / 2653 / 654
Регистрация: 23.09.2014
Сообщений: 8,947
Записей в блоге: 3
15.02.2020, 11:06
Цитата Сообщение от sesitos Посмотреть сообщение
это да,но должна быть функция например void convetacia(int num,int bas){...

ясно.
держите:
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
#include <iostream>
#include <string>
 
///----------------------------------------------------------------------------|
/// Функция 
/// void convetacia(int num, int bas)
///----------------------------------------------------------------------------:
void convetacia(int num, int bas)
{   const std::string tab = "0123456789ABCDEF"; ///<<<---добавляйте ваши символы сюда!
    
    if(tab.size() < bas)
    {   std::cout << "Error: Add symbols into tab!\n";
        return;
    }
    
    std::string s;
    
    for(int i = num; num ; num /= bas)
    {   int t = num%bas;
        s += tab[t];
    }
    for(int i = 0; i < s.size()/2; i++)
    {   std::swap(s[i], s[s.size() - i - 1]);
    }
    
    std::cout << "convetacia("<< num << ", " << bas << ") = " << s << "\n";
}
 
int main()
{   
    int num = 255;
    int bas =  16;
    
    /// Тест:
    convetacia(num, bas);
    convetacia(16 , 16 );
    convetacia(123, 10 );
    convetacia(123, 100);
    
    getchar();
    return 0;
}
Добавлено через 2 минуты
Вангую, что это не всё
и добавлять символы в таблицу tab для системы счисления по основанию 36 придётся мне?
1
 Аватар для sesitos
11 / 11 / 0
Регистрация: 10.11.2018
Сообщений: 201
15.02.2020, 11:06  [ТС]
Благодарю вас,успехов вам
0
Just Do It!
 Аватар для XLAT
4198 / 2653 / 654
Регистрация: 23.09.2014
Сообщений: 8,947
Записей в блоге: 3
15.02.2020, 11:10
Цитата Сообщение от XLAT Посмотреть сообщение
добавлять символы в таблицу tab для системы счисления по основанию 36 придётся мне?
добавил:
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
#include <iostream>
#include <string>
 
///----------------------------------------------------------------------------|
/// Функция 
/// void convetacia(int num, int bas)
///----------------------------------------------------------------------------:
void convetacia(int num, int bas)
{   const std::string tab = "0123456789ABCDEFqwertyuiopasdfghjklz";
    int t = num;
    
    if(tab.size() < bas)
    {   std::cout << "Error: Add symbols into tab!\n";
        return;
    }
    
    std::string s;
    
    for(int i = num; num ; num /= bas)
    {   int t = num%bas;
        s += tab[t];
    }
    for(int i = 0; i < s.size()/2; i++)
    {   std::swap(s[i], s[s.size() - i - 1]);
    }
    
    std::cout << "convetacia("<< t << ", " << bas << ") = " << s << "\n";
}
 
int main()
{   
    int num = 255;
    int bas =  16;
    
    /// Тест:
    convetacia(num, bas);
    convetacia(16 , 16 );
    convetacia(123, 10 );
    convetacia(36,  36 );
    convetacia(1239876543, 35);
    
    getchar();
    return 0;
}
1
 Аватар для sesitos
11 / 11 / 0
Регистрация: 10.11.2018
Сообщений: 201
15.02.2020, 11:31  [ТС]
еще прошу прощение,а как правильнее сделать в int main()
{ чтобы пользователь вводил данные?
Например
int n,k;
cout << "Select the number system (2,8,16)>> ";
cin >> n;

cout << "Number>> ";
cin >> k;
cout << "\n\tRezyltat: ";*/
0
Just Do It!
 Аватар для XLAT
4198 / 2653 / 654
Регистрация: 23.09.2014
Сообщений: 8,947
Записей в блоге: 3
15.02.2020, 11:39
Лучший ответ Сообщение было отмечено sesitos как решение

Решение

Цитата Сообщение от sesitos Посмотреть сообщение
чтобы пользователь вводил данные?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main()
{   
 
    while(true)
    {   int num; std::cout << "num = "; std::cin >> num;
        int bas; std::cout << "bas = "; std::cin >> bas;
        
        if(num < 0 || num < 2) break;
        convetacia(num, bas);
    }
    
    getchar();
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.02.2020, 11:39
Помогаю со студенческими работами здесь

Преобразовать число в указанную систему счисления
Нужно написать код в VS 2015 для этих заданий: 1.С клавиатуры вводится десятичное число M основание системы счисления от 2 до 9....

Программа перевода в двоичную систему счисления
Программа должна работать с числами в int и float, но в случае с дробными (float) видит только целую часть. В чем ошибка? ...

Написать функцию перевода в заданную систему счисления
3.Написать функцию, которая получает в качестве аргументов целое положительное число и систему счисления, в которую это число должно...

Перевода вещественного числа из шестиричной в десятичную систему счисления
Собственно, не могу найти функцию перевода вещественного числа из 6 сс в 10ую(у меня есть функция перевода целой части, но с дробной не...

Программа для перевода заданного числа в троичную систему счисления
Программа для перевода заданного числа в троичную систему счисления,напишите плиз код с коментами


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru