Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Разбить число на цифры

24K
06 января 2007 года
LexXXXXX
1 / / 06.01.2007
Предложите, пожалуйста, алгоритм разбития числа на цифры.
1.8K
06 января 2007 года
_const_
229 / / 26.11.2003
Остаток от деления на 10 числа, равного исходному. Исходное делится на 10. И далее рекурсивно.
22K
06 января 2007 года
webfashion
13 / / 06.01.2007
Либо конвертировать в строку и разбирать по символам (лучше для double) или постоянно брать остаток от деления на 10 (для int).
3
07 января 2007 года
Green
4.8K / / 20.01.2000
Цитата: webfashion
Либо конвертировать в строку и разбирать по символам (лучше для double) или постоянно брать остаток от деления на 10 (для int).


Я уже как-то говорил, но повторюсь: руки за такое надо отрывать.

63
07 января 2007 года
Zorkus
2.6K / / 04.11.2006
http://forum.codenet.ru/showthread.php?t=32489&highlight=%E1%EE%EB%FC%F8%E8%E5+%F7%E8%F1%EB%E0, тут я показывал примеры.
22K
07 января 2007 года
webfashion
13 / / 06.01.2007
Цитата: Green
Я уже как-то говорил, но повторюсь: руки за такое надо отрывать.



Поясни, не будь голословным.

3
07 января 2007 года
Green
4.8K / / 20.01.2000
Цитата: webfashion
Поясни, не будь голословным.


Алгоритм преобразования числа в строку разбивает число на отдельные цифры, но помимо этого он делает множество других операций, после чего склеивает строку из отдельных символов.
Зачем использовать этот алгоритм, как первый шаг обработки, далее "откатывая" остальные операции, если сам метод разбиения числа на цифры прост и никак не связан с символьным представлением?

Трансформация данных всегда связана с дополнительными затратами и рисками, и не следует её делать в тех случаях, когда в ней нет необходимости, а тем более, когда за трансформацией следует обратная трансформация.

Как метафора: для того, что бы быть воспитанным, нужно извиниться, если наступил кому-то на ногу. Однако, воспитанные люди не наступают на ногу специально, что бы потом извиниться.

63
07 января 2007 года
Zorkus
2.6K / / 04.11.2006
Прошу прощения, я не вчитался и решил, что речь опять идет о длинных числах:). Для расчленения коротких чисел (которые есть среди стандартных типов), конечно, следует вычленять цифры, как сказал _const_. Единственное - я бы не использовал рекурсию. Здесь она имхо, не нужна.
22K
07 января 2007 года
webfashion
13 / / 06.01.2007
Green, да я стормозил... Причем жестко:).
320
11 января 2007 года
m_Valery
1.0K / / 08.01.2007
Коллеги, sorry,что постю в уже рассмотренную тему, но возник вопросик к Вам .
Взгляните на код рассматриваемой задачки . Не уверен , что она решена .
Рекурсии нет ( она не нужна ), ф - ии itoa( плохой стиль ) - тоже , но решается только для 9
( некоторых 10 )значных и меньших чисел :( Пытался <climits>... Но тщетно ... Может я не правильно
что - то сделал ? Где ошибка ? В связи с этой возникает другая более интересная задача о длинных
числах и операциях с ними .
Например , если сделать число float - как тогда быть с операцией " % "?
// VS2003 :
Код:
#include "stdafx.h"
    #include "windows.h"

   using  std::cout;
   using std::endl;
   using std::cin;

   inline char *rus( char *s ) // русский текст в консоли
   {
     char *t = new char[strlen(s) + 1];
     CharToOem(s,t);
     return t;
   }
   inline void func( unsigned a );// ф-ия разбиения
   int _tmain( int argc, _TCHAR* argv[] )
   {
    unsigned value;
    cout<<rus ( "\tвведите число ..." )<<endl;
    cin>>value;
    func( value );
    cout<<endl;
    return 0;
  }
   inline void func( unsigned a )
   {
       unsigned b = a;int size = 0;
   
    do  // находим кол - во цифр в числе
    {
        b /= 10;
                           ++size;
    }while( b>0 );
   
  cout<<rus ("... разбиение ...")<<endl;
  int *c = new int[size];
  for( int i = 0; i<size; ++i ){ // разбиваем
   c = a % 10;
   a /= 10;
   cout<<c<<"  ";
            }
  }

Zorkus , в одном из постов начал было говорить о длинных числах , но тема прервалась ...
Можно по - подробнее с этого места ,пожалуйста .
63
11 января 2007 года
Zorkus
2.6K / / 04.11.2006
Чего подробней? Я дал ссылку на тему, где это обсуждалось относительно подробно (популярные алгоритмы длинной арифметики). Есть статья приличная по этоц теме, pdf, полметра, могу кинуть или на ftp выложить, но ненадолго. Если какие-то конкретные вопросы по этой теме - задавай, постараюсь ответить:)
320
11 января 2007 года
m_Valery
1.0K / / 08.01.2007
valera0101@voliacable.com
Спасибо.
63
11 января 2007 года
Zorkus
2.6K / / 04.11.2006
Отправил статью на codenet, чтобы каждому не слать, в раздел приложения / алгоритмы.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог