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

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

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

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

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

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

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

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

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

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

Рекурсивная функция - C++
Есть произведение n сомножителей вида (2*2)/(1*3) * (4*4)/(3*5) * ... Если не сложно, где я сделал ошибку в его подсчёте? double...

Рекурсивная функция! - C++
нужна помощь, как вычислить а в степени n, т.е написать программу использую две функции рекурсивную и нерекурсивный аналог. Очень нужно,...

5
lemegeton
2925 / 1354 / 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;
}
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"
Что делать? ато я правил вроде ничерта не помогает.
0
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
23.01.2011, 13:16 #4
Что вы там направили, показывайте. Телепаты в отпуске.
0
Mr.X
Эксперт С++
3051 / 1696 / 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;            
        }
    }
}
0
Aleks_Char
1 / 1 / 0
Регистрация: 22.01.2011
Сообщений: 10
23.01.2011, 17:11  [ТС] #6
Я ничего не правил, т.к. у меня ещё больше варов выдавало. а такую ошибку выдавало в оригинальном варианте..
0
23.01.2011, 17:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2011, 17:11
Привет! Вот еще темы с ответами:

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

рекурсивная функция - C++
написал программу вот такую как ее оформить в виде рекурсивной функции . эта программа проверяет на палиндром строку от i до j ...

Рекурсивная функция - C++
Выручайте! Очень нада сдать, сам не знаю как сделать. Описать рекурсивную функцию Combin2(N, K) целого типа, находящую C(N, K) — число...

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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