|
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 гг. |
|