Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.01.2015, 18:07   #1
Sonny01
Пользователь
 
Регистрация: 07.11.2009
Сообщений: 49
По умолчанию Преобразование числа в строку.

Всем доброго времени суток, помогите пожалуйста получить из числа 12345679 (int), строку string = {1, 2, 3, 4, 5, 6, 7, 8, 9}.
т.е. каждая цифра - отдельный элемент массива. Всё перепробовал.

Спасибо большое.
Sonny01 вне форума Ответить с цитированием
Старый 15.01.2015, 18:12   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,219
По умолчанию

Попробуй деление на 10 и остаток от деления на 10.
Arigato вне форума Ответить с цитированием
Старый 15.01.2015, 18:17   #3
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

Код:
uses SysUtils;//подключаем модуль
str:=IntToStr(число); //вот так используем функцию перевода числа в строку.
или тебе надо по-простому и по-другому?
вот, в принципе, если знаком с С++, то как-то давненько писал функцию перевода числа в строку, что на экран выводить в любом месте. перевести на Pascal сможешь?
Код:

/****************************************************************************
**       преобразование длинного целого десятичного числа в строку          **
****************************************************************************/
void LIntToStr(long q,char str[])
 {
  int m=0;//m-номер элемента строки
  long x,xs,ost;
  int k,s;
  //----- определяем размер числа --------------------------------------------
  if(q==0) k=0;
  if(q>0)  k=floor(log(q)/log(10));
  if(q<0)
   {
    k=floor(log(labs(q))/log(10));
    str[m]='-';//минус для элемента с индексом "0"
    m++;
   }
  //----- тип long занимает 10 позиций в десятичной системе --------------------
  if(k>=10)
   {
    cout<<"ошибка!число слишком большое.\n";
    delay(3000);
    exit(1);
   }
  //--------------------------------------------------------------------------
  x=labs(q);
  for(s=k;s>=0;s--)
   {
    ost=fmod(x,pow(10,s));
    if(q==0) xs=0;
    if(q<0) xs=ceil((x-ost)/pow(10,s));
    if(q>0) xs=((x-ost)/pow(10,s));
    str[m]=char(48+xs);//запись символа,соответствующего цифре
    m++;               //48-код ноля
    x=ost;
   }
  str[m]='\0';//последний элемент-признак конца строки
 }//конец LIntToStr(q,str[])
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.

Последний раз редактировалось NetSpace; 15.01.2015 в 18:20.
NetSpace вне форума Ответить с цитированием
Старый 15.01.2015, 18:20   #4
Sonny01
Пользователь
 
Регистрация: 07.11.2009
Сообщений: 49
По умолчанию

а если число большое? у меня число BigInteger (на C#), там знаков, примерно 100, нужно просто получить массив string или массив int где каждая цифра - элемент число потом дальше нужно преобразовывать и работать с каждой цифрой в отдельности. вот мои числа - 54516557358897357234759289455559823 98516974314700273784965 и 51714046414479555157320888150925011 05456896145873221300912 (показывает с пробелом, хотя пробела нет, два длинных числа)

Последний раз редактировалось Sonny01; 15.01.2015 в 18:28.
Sonny01 вне форума Ответить с цитированием
Старый 15.01.2015, 18:39   #5
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

это вот скорее формальность, можешь это выкинуть из функции перевода.
Код:
//----- тип long занимает 10 позиций в десятичной системе --------------------
  if(k>=10)
   {
    cout<<"ошибка!число слишком большое.\n";
    delay(3000);
    exit(1);
   }
а для твоих чисел это не работает разве? тип string поддерживает до 255 символов
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 15.01.2015, 19:16   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
а если число большое? у меня число BigInteger (на C#),
Не выдумывать велосипед и юзать один из методов ToString
p51x на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование часов в числа, а так же преобразование время PeMeHb Microsoft Office Excel 5 19.10.2014 17:04
Преобразование int числа в строку apeorin Общие вопросы C/C++ 5 18.12.2012 23:55
преобразование числа в строку Mortimoro PHP 4 04.10.2012 21:09
Преобразование числа в строку )Игнат( Общие вопросы Delphi 6 06.07.2008 09:32
Преобразование числа с плавающей точкой в строку Sibedir Общие вопросы Delphi 14 09.03.2008 21:48