Другие языки программирования и технологии
Подскажите решение задачи на Borland Turbo Pascal
Надо решить такую задачу в этой программе: "Написать программу реализации функции UpCase (не использовать саму функцию" Поясняю: надо сделать так, что когда вводишь символ маленькой буквы (то есть не заглавной), программа выдает эту же заглавную букву. Это основываясь на том, что мне известно о символьным переменных: Uses CRT (модуль CRT), Ord(?), Chr(?), Pred, Succ. Я понимаю, что надо сделать основываясь на таблице ASCII. Диапазон между маленькой и заглавной - 32. Заглавная - через 32 символа - маленькая. То есть надо как-то сделать, чтобы значение вводимого символа смещалось на -32. Помогите пожалуйста, если кто есть здесь умный человек.
Доброго времени суток
Вот функция, которая работает для латиницы и кириллицы.
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.
Удачи!
Вот функция, которая работает для латиницы и кириллицы.
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.
Удачи!
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.
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.
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 меньше, чем код соответствующей маленькой).
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
А так не знаю SOrry
_-_Аббасов _-_
напиши на ассемблере по приколу Hello world, интересно будет поглядеть, как на ассеблере это выглядит)
Похожие вопросы
- Нужна помощь с задачами по информатике turbo pascal
- Задача по Turbo Pascal
- Мне задали сделать задачу по Turbo Pascal, но я забыл что нужно писать в var и READ. подскажите пожалуйста.
- Люди помогите пожалуйста....Кто понимает TURBO PASCAL
- Помогите сделать задания по програмированию(двумерные массивы)Turbo Pascal
- Как вставить текст в Turbo Pascal 7.1???
- Turbo Pascal
- Объясните смысл прогаммы в Turbo Pascal
- Я в коледже Turbo Pascal прохожу. Скажите он вообще где нибудь нужен? Может Turbo Pascal морально устарел?
- DOS OC или создание ОС на Turbo Pascal