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

Помогите решить задачу по строкам

Турбопаскаль 7.0Дан текст из строчных букв (длина - 200 литер) . Напечатать этот текст заглавными русскими буквами.
Ох и грамотеи.. . UpCase работает только с буквами, а не строками, причем только с английскими:

Uses CRT;
var
s: String;
i: Integer;
begin
clrscr;
write('s=');
readln(s);
for i:=1 to length(s) do s[ i ]:=upcase(s[ i ]);
writeln(s);
readln;
end.

А для русского текста:

Uses CRT;
var
s: String;
i: Integer;
begin
clrscr;
write('s=');
readln(s);
for i:=1 to length(s) do
begin
if (ord(s[ i ])>=160) and (ord(s[ i ])<=175) then s[ i ]:=chr(ord(s[ i ])-32);
if (ord(s[ i ])>=224) and (ord(s[ i ])<=239) then s[ i ]:=chr(ord(s[ i ])-80);
end;
writeln(s);
readln;
end.
Александр Соколов
Александр Соколов
23 519
Лучший ответ
Александр Тиняков для английского текста работает, а вот для русского выдаёт ошибку type mysmatch
Доброго времени суток.

Вот вариант функции, заточенной под обе раскладки. И именно под ТР. В делфи вроде директива absolute не хочет работать или тип строк надо брать ShortString, уже не помню.

function UpStr(S : String) : String;
var
C : Char;
B : Byte absolute C;
J : Byte;
begin
for J:= 1 to Length(S) do begin
C := S[J];
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);
S[J] := C;
end;
UpStr := S;
end;

Дальше все просто.

Write('Введитет текст');
ReadLn(S);
WriteLn(UpStr(S));

Удачи!
Игорь Брюханов
Игорь Брюханов
59 613
Эдуард Кадурин Кажется, вы даже не попробовали ее запустить...
Она не работает...
есть функция UpperCASE
ей просто преобразовываешь свой текст и все она вернет тебе все заглавные.
А помоему нет UpperCASE в паскале
Язык? Всегда есть функция типа UpperCase - она для этого и нужна.
Саня :)
Саня :)
239