Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Помогите!


Автор: barsuk 3.11.2004, 15:06
помогите пожалуйста! Есть число скажем 10 нужно преобразовать в пропись "десять"!

Автор: chipset 3.11.2004, 15:22
Модератор: Название темы должно отражать ее суть!
Ну сделай массив строковой для единиц "один","два","три"...
Для десятков "десять", "двадцать", "тридцать"...
Для сотен "сто","двести","триста"..
Загони в ассоциативный массив (std::map).
И нарисуй алгоритм который будет смешивать эти названия в одну строку :)
Типа
Код

//...
if(number>100) temp = static_cast<int>(number/100);
str_str[2] = digit_map[temp];//Извлечение из map'a и передача второму порядку string'a..

СУВ.

Автор: barsuk 3.11.2004, 15:27
А еще предложения есть???

Автор: Mad 4.11.2004, 14:56
barsuk
Код

const char *iw1[] = { /*... еденицы ...*/};
const char *iw10[] = { /* ... десятки ...*/};
const char *iw100[] = { /* ... сотни ...*/};

char *Num2Word(int num)
{
   char tmp[256];
   tmp[0] = 0;
   int tnum = num;

   if (tnum > 99)
   {
       int t = (int)(tnum/100);
       strcat(tmp,  iw100[t]);
       tnum -= t*100;
   }

   if (tnum > 9)
   {
       int t = (int)(tnum/10);
       strcat(tmp,  iw10[t]);
       tnum -= t*10;
   }

   if (tnum)
       strcat(tmp,  iw1[tnum]);

   return strdup(tmp);
}

Добавлено @ 14:58
chipset
Для такой простой задачки std::map это уже черезчур smile

Автор: gray_k 4.11.2004, 16:18
Вообще примеров функций, выдающих строковое значение числа в инете море, каждый кто пишет проги для бухов сталкивался с этим. Поищи.

Автор: cardinal 5.11.2004, 01:01
Вот пример на VB:
http://forum.vingrad.ru/index.php?showtopic=32374
Все просто как никогда smile Если что - спрашивай!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)