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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Aleks_Char
1 / 1 / 0
Регистрация: 22.01.2011
Сообщений: 10
#1

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

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

Народ помогите плиз. Нужно написать рекурсивную функцию перевода из 16 сс в 10 сс....Заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2011, 23:15     Рекурсивная функция... Очень надо...
Посмотрите здесь:

Рекурсивная функция - C++
Нужно перемножить n последних элементов матрицы,используя метод рекурсии. Матрицу я нашел как сделал,вот #include <iostream> ...

Рекурсивная функция - C++
Помогите сделать вот такое задание

Рекурсивная функция C++ - C++
Сосчитать f(y)=3y+5, yk - входное данное.

Рекурсивная функция - C++
ПРивет всем! ребят помогите решать вот такую задачку: Используя команды write(x) лишь при х=0,1,…9 написать рекурсивную процедуру вывода...

Рекурсивная функция - C++
Нужно написать рекурсивную функцию вычисления \prod |{a}_{i}| где {a}_{i} целочисленный массив {a}_{i} -четное {a}_{i}<0 ...

Рекурсивная функция - C++
Последовательность многочленов определяется рекуррентными соотношениями: Т0(x) = 1, Т1(x) = x, Тn(x) = 2хТn-1(x) – Тn-2(x) ...

Рекурсивная функция - C++
Скласти програму з використанням рекурсивної функції, в якій обчислити суму 12 членів рекурентної послідовності : X0=1;X1=1;Xk=0,7Xk-1+...

Рекурсивная функция - C++
...помогите пожалуйста сделать задачки... http://cs4734.vkontakte.ru/u26212689/96588963/x_20024bb4.jpg ...

Рекурсивная функция - C++
Вычислить элементы ряда с помощью рекурсивной функции. Порядок вычисления элементов ряда: a(1)=1, a(n)=5*(2n-1)n-a(n-1), n>0 ...

рекурсивная функция - C++
Составить программу с рекурсивною функцией n!+m! де n=4,m=6.

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

Рекурсивная функция[] - C++
Доброго времени суток. Мне необходимо написать рекурсивную функцию для решения задачи: Помогите пожалуйста в решении данной...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
23.01.2011, 01:03     Рекурсивная функция... Очень надо... #2
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;
}
Aleks_Char
1 / 1 / 0
Регистрация: 22.01.2011
Сообщений: 10
23.01.2011, 01:37  [ТС]     Рекурсивная функция... Очень надо... #3
Спасибо большое ))

Добавлено через 25 минут
Только пишет что " 'digit' is assigned a value that is never used"
Что делать? ато я правил вроде ничерта не помогает.
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
23.01.2011, 13:16     Рекурсивная функция... Очень надо... #4
Что вы там направили, показывайте. Телепаты в отпуске.
Mr.X
Эксперт С++
3048 / 1693 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
23.01.2011, 16:39     Рекурсивная функция... Очень надо... #5
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;            
        }
    }
}
Aleks_Char
1 / 1 / 0
Регистрация: 22.01.2011
Сообщений: 10
23.01.2011, 17:11  [ТС]     Рекурсивная функция... Очень надо... #6
Я ничего не правил, т.к. у меня ещё больше варов выдавало. а такую ошибку выдавало в оригинальном варианте..
Yandex
Объявления
23.01.2011, 17:11     Рекурсивная функция... Очень надо...
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru