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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ прогрессия http://www.cyberforum.ru/cpp-beginners/thread232739.html
Подсчитать сумму первых 500 членов бесконечного ряда: 1+1/2+1/3+1/4+…+1/n+… Выведите значение суммы на экран Хелп ми)Пожалуйста
C++ Реверсирование Помогите пожалуйста! Задача Реверсировать число и увеличить его в 2 раза. http://www.cyberforum.ru/cpp-beginners/thread232698.html
C++ endl
Объясните пожалуйста зачем вставлять эту функцию после выводимого потока например: cout<<....<<endl; Зачем она нужна и что выполняет?
массив С++ for dos C++
Дан Целочисленный массив A, среди элементов есть одинаковые. Создать массив из различных элементов A. #include <iostream.h> #include <conio.h> #include <stdlib.h> #include <stdio.h> void main() { int mas; clrscr();
C++ на экзаменене срочно http://www.cyberforum.ru/cpp-beginners/thread232669.html
програма котора я определяет суммму элементов расположеных между максимальным и минмальным элементом заданой целочисленной послед. или исправте ошибки плиззззз #include <iostream.h> #include <iomanip.h> #include <math.h> #include <conio.h> int main() { clrscr(); const int n=5;
C++ начинающему в освоении с++ Мне необходимо для трудоустройства учить с++, и мне дали задание написать простейшее серверное приложение к которому можно подключиться через tellnet и получать от этого серверного приложения эхо в виде вводимых команд в консоль tellnet. Изучать язык только начал, по книге Лафоре. Вопрос такой, как лучше организовать свое самообучение чтобы как можно быстрее написать такую программу но и чтобы я... подробнее

Показать сообщение отдельно
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
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;
}
 
Текущее время: 21:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru