Другие языки программирования и технологии

Подскажите решение задачи на Borland Turbo Pascal

Надо решить такую задачу в этой программе: "Написать программу реализации функции UpCase (не использовать саму функцию" Поясняю: надо сделать так, что когда вводишь символ маленькой буквы (то есть не заглавной), программа выдает эту же заглавную букву. Это основываясь на том, что мне известно о символьным переменных: Uses CRT (модуль CRT), Ord(?), Chr(?), Pred, Succ. Я понимаю, что надо сделать основываясь на таблице ASCII. Диапазон между маленькой и заглавной - 32. Заглавная - через 32 символа - маленькая. То есть надо как-то сделать, чтобы значение вводимого символа смещалось на -32. Помогите пожалуйста, если кто есть здесь умный человек.
Erbol Tokanbaev
Erbol Tokanbaev
11 757
Доброго времени суток

Вот функция, которая работает для латиницы и кириллицы.

function UpCaseEx(C: Char): Char;
var
B : Byte absolute C;
begin
if (((C >='a') and (C <='z')) or ((C >='а') and(C <='п'))) then Dec(B, 32) else
if ((C >='р') and (C <='я')) then Dec(B, 80) else
if C ='ё' then Dec(B);
UpCaseEx := C;
end;

Решение, предложенное Timon правильное, но бессмысленное, поскольку "родная" функция UpCase работает именно с латиницей. А вот кириллица - другое дело. Предложенный выриант исправляет ситуацию. Сделана именно для турбо паскаля. Корректно обрабатывает символ "ё". Директива absolute при объявлении переменной B (B : Byte absolute C); используется для того, чтобы не обращаться к функциям Ord и Chr.

Удачи!
Александр Миронов
Александр Миронов
59 613
Лучший ответ
uses crt;
var
s : string;
i : byte;
begin
clrscr;
readln(s);
for i := 1 to length(s) do
s := chr((ord(s)+32) mod 256);
writeln(s);
readkey;
end.
A F
A F
1 239
uses crt;
var
s:string;
i:byte;
begin
clrscr;
readln(s);
for i:=1 to length(s) do
if (ord(s)>=97) and (ord(s)<=122) then
s:=chr(ord(s)-32);
writeln(s);
readley;;
end.

Считываес строку. Проверяем каждый символ. Если символ - маленькая буква (ее код в таблице ASCII от 97 до 122), то делаем ее большой (код большой на 32 меньше, чем код соответствующей маленькой).
На ассемблере бы подсказал.
А так не знаю SOrry
_-_Аббасов _-_ напиши на ассемблере по приколу Hello world, интересно будет поглядеть, как на ассеблере это выглядит)