Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 08.02.2021
Сообщений: 3

Перевод числа из десятичной системы счисления в шестнадцатеричную

08.02.2021, 12:29. Показов 1768. Ответов 27
Метки c++ (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите с написание программы, уже мозг не варит(
 Комментарий модератора 
DrugL1ve, пользуйтесь поиском по разделу, прежде, чем создавать тему.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.02.2021, 12:29
Ответы с готовыми решениями:

Перевод числа из десятичной системы счисления в шестнадцатеричную
Выскажите вашу точку зрения по этому коду Задача: Напишите функцию, которая будет переводить числа из десятичной системы счисления в...

Перевод из десятичной системы счисления в шестнадцатеричную
Здраствуйте дорогое сообщество КиберФорума, на просторах вашего форума нашёл не один вариант перевода из 10 в 16 вид, но не нашёл пояснения...

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

27
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38209 / 21142 / 4312
Регистрация: 12.02.2012
Сообщений: 34,755
Записей в блоге: 14
12.02.2021, 17:30
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
А он, рейтинг, даже близко не соответствует коду, который ты показываешь.
- а у тебя, судя по всему, рейтинга нет совсем, вот ты и злишься.

Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Мне по-барабану, что тебе нравится, а что нет.
- взаимно, голубчик. Можешь быть свободным.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38209 / 21142 / 4312
Регистрация: 12.02.2012
Сообщений: 34,755
Записей в блоге: 14
13.02.2021, 20:20
SmallEvil, да, признаю, что Ваш посыл не понял. Оператор += для строк работает быстрее переприсвоения (с вызовом конструктора). Замерил производительность - так быстрее даже с учетом реверса. Разница существенная - примерно 3 раза. Но мой последний код (с резервированием C-строки в динамической памяти - еще быстрее (но не столь заметно - в 1.6 раза). Вот последний код с вычислением нужного размера памяти (с некоторыми поправками). Он самый быстрый и логарифмы и new/delete его не замедляют.

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
string toBase_1 (unsigned long long v, int base) 
{
    static const string digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    string str; 
    
    if (! (base>0 && base<37)) return string(); 
    
    double zv = (double) v;
    double zb = (double) base;
    int k = (int) (ceil (log(zv)/log(zb)));
    
    int  ptr;
    char *rr=new char[k+2];
    rr[k+1]=0;
    ptr=k;
 
    while(v)
    {
        rr[ptr--]=digits[v%base];
        v /= base;
    }
 
    str=string(rr+ptr+1);
    delete [] rr;
    return str;
 
}
1
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
13.02.2021, 21:14
Catstail, не стоило себя так утруждать, я не сомневался что Вы сообразите.



Добавлено через 3 минуты
p.s. еще попробую реализовать с-строку через unique_ptr (заодно познакомлюсь с ним немного)
что бы вернуть сразу строку без ее предварительного создания
C++
1
 return string(rr+ptr+1);


Добавлено через 2 минуты
как то так ...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
string toBase(unsigned long long v, int base) 
{
    static const string digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
   
    if (! (base>0 && base<37)) return {}; 
  
    int k = (int) (ceil (log(v)/log(base)));
    // char *rr=new char[k+2];
    auto rr = std::make_unique<char[]>(k+2);
    rr[k+1]=0;
    int ptr=k;
 
    while(v)
    {
        rr[ptr--]=digits[v%base];
        v /= base;
    }
    return string(&rr[0]+ptr+1);
}
1
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
13.02.2021, 21:19
Цитата Сообщение от SmallEvil Посмотреть сообщение
int k = (int) (ceil (log(v)/log(base)));
    // char *rr=new char[k+2];
    auto rr = std::make_unique<char[]>(k+2);
Вот это у тебя убьёт всю производительность. Тем более в потоках. Ты пытаешься сэкономить на 64 байтах?

Добавлено через 1 минуту
Выдели буфер на стеке и всё
C++
1
char rr[64];
Даже ноль в конец можно не добавлять
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
13.02.2021, 21:24
еще есть ситуация при v = 0... tuntime ошибка
нужна проверка в начале функции

думаю на этом можно и остановиться
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
string toBase(unsigned long long v, int base) 
{
    static const string digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    if (v==0)
        return string(1, digits[0]);   
    if (! (base>0 && base<37)) return {}; 
  
    int k = (int) (ceil (log(v)/log(base)));
    // char *rr=new char[k+2];
    auto rr = std::make_unique<char[]>(k+2);
    rr[k+1]=0;
    int ptr=k;
 
    while(v)
    {
        rr[ptr--]=digits[v%base];
        v /= base;
    }
    return string(&rr[0]+ptr+1);
}
Добавлено через 1 минуту
oleg-m1973, блин. точно, на стеке же можно, сорри
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38209 / 21142 / 4312
Регистрация: 12.02.2012
Сообщений: 34,755
Записей в блоге: 14
13.02.2021, 21:28
SmallEvil, да, конечно. Место выделять можно в стеке. Но мне хотелось заодно посмотреть, как влияет на производительность new/delete. Оказалось, что незначительно. Код с C-строками оказался самым быстрым.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
13.02.2021, 21:34
все же первый пример от oleg-m1973 самое то

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
std::string toBase (unsigned long long v, int base) 
{
    static const char digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    if (v==0)
        return string(1, digits[0]);   
    if (! (base>0 && base<37)) // 2 - 36 систем счисления
        return std::string(); 
 
    char buf[sizeof(v) * 8];
    char *p = std::end(buf) - 1;
 
    while(v)
    {
        *(p--) = digits[v%base];  // цифра
        v /= base;  // частное
    }
    return std::string(p+1, std::end(buf));
}
oleg-m1973, return std::string(p+1, std::end(buf));
тут нужно прибавлять один почему то.
Все для меня это ФИНАЛ версия
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
13.02.2021, 21:34
Цитата Сообщение от SmallEvil Посмотреть сообщение
oleg-m1973, блин. точно, на стеке же можно, сорри
Перевод числа из десятичной системы счисления в шестнадцатеричную
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.02.2021, 21:34

Перевод числа из десятичной в шестнадцатеричную систему счисления
Здраавствуйте, помогите найти ошибку в этом коде. Непонимаю почему при переводе таких чисел как 16,32,64,128 и тд не дописываются нули. ...

Перевод числа из восьмеричной системы счисления в шестнадцатеричную систему счисления
Вот пример числа: 754 = 1EC 1000 = 200

Рекурсия: перевод целого числа из десятичной системы счисления в 9 систему счисления
Написать рекурсивную функцию перевода целого числа из десятичной системы счисления в 9-чную систему счисления.

Перевод натурального числа из десятичной системы счисления в систему счисления по основанию
Здравствуйте. Я хотела бы попросить у вас помощи. Я понимаю, что это не очень красиво, но вдруг кто-нибудь откликнется. Я не очень...

Перевод числа из десятичной системы счисления
Помогите пожалуйста решить поставленную задачу с помощью функции пользователя и рекурсивной:Для заданного целого десятичного числа N...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru