[Си]Перевод словарной записи числа в цифр формат[За вознаграждение]

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, dr.Jekill, MOTOCoder, Medved

Ответить
velviamo
Сообщения: 3
Зарегистрирован: 15 дек 2006, 17:28

15 дек 2006, 23:47

вопрос закрыт
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

16 дек 2006, 01:59

Ох, если бы не на Си, а на Паскале, а лучше - Дельфи, да не под Линукс, а под винду, да без Лекса, да без Якса, да без конечного автомата - могу сделать здесь, сейчас и бесплатно ;)
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
velviamo
Сообщения: 3
Зарегистрирован: 15 дек 2006, 17:28

16 дек 2006, 10:20

Ну если, здесь, сейчас и бесплаьно, то делай! Может некоторые идеи можно будет реализовать и в лексе с яком!=))
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

16 дек 2006, 13:23

{В прошлый раз торопился на электричку, поэтому немеряно налажал}

s:='ONE HUNDRED AND TWENTY-FIVE'
sum:=0;
if pos('ONE',s)=1 then inc(sum,100);
if pos('TWO',s)=1 then inc(sum,200);
{.....до девяти}

if pos('TEN',s)<>0 then begin inc(sum,10); exit; end;
if pos('ELEVEN',s)<>0 then begin inc(sum,11); exit; end;
{... до 19}

if pos('TWELWE',s)<>0 then inc(sum,20);
if pos('THIRTY',s)<>0 then inc(sum,30);
{до 90}

delete(s,1,1); {это чтобы избежать глюков с числами типа 121, 373}
if pos('ONE',s)>1 then inc(sum,1);
if pos('TWO',s)>1 then inc(sum,2);
{... до девяти}
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить