[Си]Перевод словарной записи числа в цифр формат[За вознаграждение]
Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill
Ох, если бы не на Си, а на Паскале, а лучше - Дельфи, да не под Линукс, а под винду, да без Лекса, да без Якса, да без конечного автомата - могу сделать здесь, сейчас и бесплатно 

Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ну если, здесь, сейчас и бесплаьно, то делай! Может некоторые идеи можно будет реализовать и в лексе с яком!=))
{В прошлый раз торопился на электричку, поэтому немеряно налажал}
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);
{... до девяти}
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);
{... до девяти}
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.