Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
1 / 1 / 0
Регистрация: 22.01.2011
Сообщений: 10

Рекурсивная функция... Очень надо...

22.01.2011, 23:15. Показов 831. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ помогите плиз. Нужно написать рекурсивную функцию перевода из 16 сс в 10 сс....Заранее спасибо
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.01.2011, 23:15
Ответы с готовыми решениями:

Рекурсия: удаление из строки всех лишние пробелов
Разработать рекурсивную функцию, удаляющую из строки все лишние пробелы. Пробелы считаются лишними, если их подряд идет более двух, если...

Рекурсивная функция
Как написать рекурсивную функцию для реализации рекуррентной последовательности? В основной программе вывести первые n членов...

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

5
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
23.01.2011, 01:03
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <cstdio>
#include <cmath>
#include <cstring>
#include <cassert>
 
int HexToDec(const char *hex) {
  if (*hex == '\0')
    return 0;
  assert((*hex >= 'A' && *hex <= 'F') || (*hex >= '0' && *hex <= '9'));
  int digit = (*hex >= 'A' && *hex <= 'F') ? *hex - 'A' + 10 : *hex - '0';
  return digit * pow(16., strlen(hex) - 1) + HexToDec(hex+1);
}
 
int main(int argc, char *argv[]) {
  printf("%d\n", HexToDec("FFFF"));
  printf("%d\n", HexToDec("0F0F"));
  printf("%d\n", HexToDec("F0F0"));
  return 0;
}
Быстрее, но непонятней и без проверки:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <cstdio>
#include <cstring>
 
int HexToDec(const char *hex) {
  if (*hex == '\0') return 0;
  return (((*hex >= 'A' && *hex <= 'F') ? *hex - 'A' + 10 :
          ((*hex >= '0' && *hex <= '9') ? *hex - '0' : 0))
          << (4 * (strlen(hex) - 1))) + HexToDec(hex+1);
}
 
 
int main(int argc, char *argv[]) {
  printf("%d\n", HexToDec("FFFF"));
  printf("%d\n", HexToDec("0F0F"));
  printf("%d\n", HexToDec("F0F0"));
  return 0;
}
0
1 / 1 / 0
Регистрация: 22.01.2011
Сообщений: 10
23.01.2011, 01:37  [ТС]
Спасибо большое ))

Добавлено через 25 минут
Только пишет что " 'digit' is assigned a value that is never used"
Что делать? ато я правил вроде ничерта не помогает.
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
23.01.2011, 13:16
Что вы там направили, показывайте. Телепаты в отпуске.
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
23.01.2011, 16:39
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
//////////////////////////////////////////////////////////////////////////////////////
//написать рекурсивную функцию перевода из 16 сс в 10 сс
//////////////////////////////////////////////////////////////////////////////////////
#include <cctype>
#include <iostream>
#include <string>
//////////////////////////////////////////////////////////////////////////////////////
typedef std::string  T_str;
typedef long long    T_num;
//////////////////////////////////////////////////////////////////////////////////////
bool  get_dec_val
    (
        char    hex_dig_symb,
        T_num&  dec_val
    )
{    
    if(   '0' <= hex_dig_symb
        && hex_dig_symb <= '9')
    {
        dec_val = hex_dig_symb - '0';
        return  true;
    }
    hex_dig_symb = tolower(hex_dig_symb);
    if(   'a' <= hex_dig_symb
       && hex_dig_symb <= 'f')
    {
        dec_val = hex_dig_symb - 'a' + 0xa;
        return  true;
    }    
    return  false;
}
//////////////////////////////////////////////////////////////////////////////////////
bool  get_dec_val
    (
        const T_str&  hex_str,
        T_num&        res_val
    )
{
    T_num   dig_dec_val   = 0;
    T_num   tail_dec_val  = 0;
 
    bool  bool_res =    hex_str.empty()
                     ||    get_dec_val  (*hex_str.rbegin(),                     dig_dec_val  )
                        && get_dec_val  (hex_str.substr(0, hex_str.size() - 1), tail_dec_val );
 
    res_val = dig_dec_val + 0x10 * tail_dec_val;
    return  bool_res;
}
//////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    for(;;)
    {
        std::cout <<     "Число в шестнадцатеричной системе счисления: ";
        T_str  hex_str;
        getline(std::cin, hex_str);
        if(hex_str.empty()) break;        
        T_num  dec_val;
        if(get_dec_val(hex_str, dec_val))
        {
            std::cout << "В десятичной системе счисления             : "
                      << dec_val
                      << std::endl
                      << std::endl
                      << std::endl
                      << std::endl;            
        }
    }
}
0
1 / 1 / 0
Регистрация: 22.01.2011
Сообщений: 10
23.01.2011, 17:11  [ТС]
Я ничего не правил, т.к. у меня ещё больше варов выдавало. а такую ошибку выдавало в оригинальном варианте..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.01.2011, 17:11
Помогаю со студенческими работами здесь

Рекурсивная функция: поиск наименьшего пути из левого верхнего угла матрицы в правый нижний
Здравствуйте! Осваиваю рекурсивные функции на C++ Написал классический алгоритм (динамическое программирование) для поиска...

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

Рекурсивная функция
Добрый день. Мне необходимо составить рекурсивную и нерекурсивную функцию для следующей задачи: найти сумму 12+22+42+72+112... (n...

Рекурсия: нахождение количества цифр в строке
Описать рекурсивную функцию Digits(S) целого типа, находящую количество цифр в строке S без использования оператора цикла. С помощью этой...

Рекурсивная функция C++
Здравствуйте ,помогите реализовать этот пример с помощью рекурсии с++


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru