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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2011, 02:44   #1
Form_13
Форумчанин
 
Регистрация: 25.04.2011
Сообщений: 107
Вопрос замена цифр на слова

Код:
 char *zamena( int m, char *s)
{
    const char *text[4][10] = {
       {"", "один ", "два ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять "},
       {"", "одиннадцать ", "двенадцать ", "тринадцать ", "четырнадцать ", "пятнадцать ", "шестнадцать ", "семнадцать ", "восемнадцать ", "девятнадцать "},
       {"", "десять ", "двадцать ", "тридцать ", "сорок ", "пятьдесят ", "шестьдесят ", "семьдесят ", "восемьдесят ", "девяносто "},
       {"", "сто ", "двести ", "триста ", "четыреста ", "пятьсот ", "шестьсот ", "семьсот ", "восемьсот ", "девятьсот "}};
   strcat( s, text[3][ m / 100]);
   if( (m / 10)% 10 != 1) strcat( s, text[2][ (m / 10)% 10]);
   strcat( s, text[ (m / 10)% 10 == 1 ? 1: 0][ m % 10]);
   return s;
}
эта функция на си, используется в исходной процедуре.

Код:
Procedure change (var s:string; r,k:string);
  var flag:boolean;
      i,m,err,del:integer;
      t:string;
  begin
   flag:=false;
   i:=1;                  //начало пробега по циклу
   if not (s='') then     //если строка не пустая..
   begin
   Repeat
    If ((s[i]=r[1]) and (s[i+1]=r[2]) and (s[i+2]=r[3]) and (s[i+3]=r[4])) or ((s[i]=k[1]) and (s[i+1]=k[2])) and ((s[i+2]=k[3]) and (s[i+3]=k[4])) then flag:=true;  //начало вхождения
    if flag then   //если вхождение обнаружено..
     begin
      if i=3 then  //если первый символ строки,
              begin
               t:=copy(s,1,1);   //копируем его и удаляем
               delete(s,1,3)
              end
             else if i=4 then
                          begin
                           t:=copy(s,1,2);  //если первые два символа строки,
                           delete(s,1,4)    //копируем их и удаляем
                          end
                         else t:=copy(s,i-4,3);   //иначе копируем символа, с i-ый -4
      val(t,m,err);   //перевод в числовой вид
      del:=3;
      While err<>0 do  //проверка на ошибку
       begin
        delete(t,1,1);            //удаляем по одному символу
        if t='' then break;       //проверка на пустую строку
        val(t,m,err);             //перевод в числовой вид
        del:=del-1;               //длинна числа
       end;
      if t='' then break;         //проверка на пустую строку
      zamena(m,t);
      If m<100 then delete(s,i-del-1,del)    //удаление цифр
               else delete(s,i-del-2,del+1);
      If m<100 then insert(t,s,i-del)        //вставка их словесных представлений
               else insert(t,s,i-del-1);
      i:=i+length(t);                       //прибавлений к параметру цикла, длинну вставленной строки
     end;
    flag:=false;
    i:=i+1;
   Until i>=(length(s)-3);                   //цикл идёт до конца строки
   end
   else exit;                                //выход из цикла, в случае, если строка пустая
  end;
надо перевести вторую функцию с паскаля на си. первую перевёл, вторую можете помочь? ищет цифры, заменяет на слова, удаляет цифры, вставляет подстроку со словесными эквивалентами цифр в исходную строку.
Form_13 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти все слова-числа, т.е. такие, которые состоят только из цифр. Известно, что количество цифр в каждом числе не более 9 (девяти vikichocolate Помощь студентам 1 21.12.2011 00:12
замена цифр словами xant Помощь студентам 0 16.05.2011 20:20
перенос формата ячейки и преобразование цифр в слова Protuberanez Microsoft Office Excel 11 16.03.2011 00:06
Замена знаков сноски (цифр на звездочки) caute Microsoft Office Word 19 27.12.2009 10:34