Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите расшифровать фрагмент c chr и ord
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
Alexey
Подскажите, пожалуйста, что делают данные строки:
Код
case c of
'а'..'п':stmp:=stmp+chr(ord(c)-32);
'р'..'я':stmp:=stmp+chr(ord(c)-80);
else stmp:=stmp+upcase(c);
end;

stmp - переменная типа line...
Не могу врубиться.
volvo
Цитата
что делают данные строки:

Ну, наверное, то же самое, что и вот эти: Выделить заголовки
только работают со строкой...
smile.gif
Alexey
Т.е. если с = от а до п, или от р до я, ей присваивается соответствующее значение в латинском алфавите?
а если с - буква лат.алфавита, то в переменную stmp добавляется эта же буква, но большая?..
volvo
Нет... Ты же не привел фрагмент полностью... Скорее всего, там идет цикл по всем символам строки... И каждый символ переводится в верхний регистр... Чтобы перевести в верхний регистр строчные русские буквы 'а' .. 'п' достаточно из кода буквы вычесть 32, для букв 'р' .. 'я' - вычитается 80, все остальные символы нормально переводятся встроенной функцией Upcase... Ну, и поскольку строка - то переведенный символ добавляется в конец строки-результата...

Итого: скорее всего имеется функция получающая на вход строку символов (любых - русских или латинских), и возвращающая эту же строку переведенную в верхний регистр...
Alexey
Вот сама функция:
Код
function stupcase(s:line):line;
      var
         stmp:line;
         i:byte;
         c:char;
      begin
       stmp:='';
             for i:=1 to length(s) do
                 begin
                  c:=s[i];
                   case c of
                    ' '..'Ї':stmp:=stmp+chr(ord(c)-32);
                    'а'..'п':stmp:=stmp+chr(ord(c)-80);
                    else stmp:=stmp+upcase(c);
                 end;
      end;
      stupcase:=stmp;
end;

Так оно и есть (вроде), спасибо...
А то не думается об информатике в 12 часов ночи)))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.