Помощь - Поиск - Пользователи - Календарь
Полная версия: цифры
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
электрик
Помогите решить задачу!
Составьте прогу, к-ая по названию числа<1000, написанному на русском (английском) языке, формирует его цифровую запись
за ранее спасибо!
klem4
uses crt;
const
     d10:array[1..18] of string =('один','два','три','четыре','пять','шесть','семь','восем','девять',
     'одиннадцать',
     'двеннадцать','тринадцать','четырнадцать','пятнадцать','шеснадцать','семнадцать','восемданцать','девятнадцать');
     d11:array[1..18] of integer =(1,2,3,4,5,6,7,8,9
     ,11,12,13,14,15,16,17,18,19);
    d100:array[1..9] of string =('десять','двадцать','тридцать','сорок','пятдесят','шестьдесят',
                     'семдесят','восемдесят','девяносто');
    d111:array[1..9] of integer=(10,20,30,40,50,60,70,80,90);
   d1000:array[1..9] of string=('сто','двесте','тристо','четыресто','пятьсот','шестьсот','семьсот','восемьсот','девятьсот');
   d1111:array[1..9] of integer=(100,200,300,400,500,600,700,800,900);


var s:string;
    result:integer;
    i,j,n,bdigit:integer;

Begin
   clrscr;
   result:=0;
   readln(s);
   i:=1;
   while i<=length(s) do
    begin
       while(i<=length(s))and(s[i]=#32) do
        inc(i);
       if i<=length(s) then
        begin
           bdigit:=i;
           while (i<=length(s))and(not(s[i]=#32)) do
            inc(i);
           for j:=1 to 18 do
            if copy(s,bdigit,i-bdigit)=d10[j] then
             inc(result,d11[j]);
           for j:=1 to 9 do
            if copy(s,bdigit,i-bdigit)=d100[j] then
             inc(result,d111[j])
            else
            if copy(s,bdigit,i-bdigit)=d1000[j] then
             inc(result,d1111[j]);
        end;
    end;
    writeln('Result=',result);
    readln;
end.



по поводу рациональности можно еще подумать, но идея я думаю ясна.
тестировал, вроде все ок.
зы за граматические в числительных не бейте, с русским неважно в школе было=) ну а щас уже буквы забывать начинаю :D
электрик
спасибо!!!!!!!!!!!! Век не забуду!!!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.