![]() |
SPYRYTUS - учеба, работа и развлечения | ![]() |
|
Алгоритм преобразования целого числа в строку Алгоритм преобразования числа в строку, очень прост и похож на преобразование строки в число. Сперва нужно найти количество знаков в числе. Переменная Temp - используется для расчета количества знаков, а переменная Dig - показывает сколько знаков в числе : int Temp=Input, Dig=1; while (Temp/10 > 0) { Temp /=10; Dig++; } Все бы хорошо, да только "С++" не умеет работать со строками, точнее говоря, не то, что не умеет, а их у него вообще нет. Для выхода из такой ситуации пришлось оранизовывать глобальный динамический массив T. Temp=0; T = new char[Dig+1]; // dynamic array define of global for (int i=0;i<Dig;i++) T[i]='\0'; Вот пожалуй и вся основная часть расчета. Теперь осталось собрать строку и возвратить ее в виде результата. Чтобы цифру преобразовать в символ нужно к этой цифре прибавить код 0x30. Ну вот цифру получили, а теперь нужно получить все цифры из числа. Сделать это можно следующим образом : наше исходное число разделить на текущий указатель степени числа ?! и отнять произведение предыдущего результата сложенного из кодом 0x30. Все сказанное реализованно в коде который ниже. Для работы функции pow нужно подключить библиотеку math.h. for (int i=0;i<Dig;i++) { T[i] = Input/pow(10,Dig-1-i)-Temp*10+0x30; Temp = Input/pow(10,Dig-1-i); } return T; Полный вариант функции IntToStr представлен ниже, он написан на языке "С++", как уже упоминалось ранее. char *IntToStr(int Input) { int Temp=Input, Dig=1; while (Temp/10 > 0) { Temp /=10; Dig++; } Temp=0; T = new char[Dig+1]; // dynamic array define of global for (int i=0;i<Dig;i++) T[i]='\0'; for (int i=0;i<Dig;i++) { T[i] = Input/pow(10,Dig-1-i)-Temp*10+0x30; Temp = Input/pow(10,Dig-1-i); } return T; } Готовый вариант программы сможете найти, щелкнув в навигационной панели ссылку Готовые программы. |
|||||||||||||||
![]() ![]() |
![]() |
© Spyrytus_LTD© 2003 - 2006 гг. |
![]() ![]() |