Сайт SPYRYTUS_LTD© SPYRYTUS - учеба, работа и развлечения title image
Новости :
    Software News
    Hardware News
Обзоры :
    Главная
    Алгоритмы
    Готовые программы
    Игры
Разработка :
    Свои разработки
    Продажа и заказ ПО
Развлечения :
    Отдохни !

Алгоритм преобразования целого числа в строку

      Алгоритм преобразования числа в строку, очень прост и похож на преобразование строки в число. Сперва нужно найти количество знаков в числе. Переменная 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;
}		

      Готовый вариант программы сможете найти, щелкнув в навигационной панели ссылку Готовые программы.

 
  Перейти вверх страници ВВЕРХ Перейти вверх страници
Сайт хостинга Рейтинг посещаемости Поисковая машина Интернет-магазин CD-дисков
Хостинг от uCoz