В файле, содержащем строки, содержатся русские имена. Проверить, все ли они начинаются с прописной буквы, если нет, то исправить эту ошибку. Записать полученные данные в новый файл.
трудность в том, что не знаю , как проверить и исправить ошибку. предполагается, что имена разделяются в строке пробелом.
18192123
11.01.2007 3:34
может как то использовать такое выражение
upcase(s[i]) in ['A'..'Z']
?
Sundery
11.01.2007 3:55
var a:array [1..10] of string; i,tmp:integer; begin s[1]:='afas'; s[2]:='Ccvn'; s[3]:='jfg'; s[4]:='Hdfjags'; s[5]:='tujdm'; -------------------------- for i:=1 to 5 do begin tmp:=ord(s[i,1]); if tmp in [97..122] then begin s[i,1]:=chr(tmp-32); end; writeln(s[i]); end; -------------------------- end.
вроде бы то, что тебе надо
volvo
11.01.2007 4:31
Цитата
вроде бы то, что тебе надо
С какой стати? Задание читаем ВНИМАТЕЛЬНО!
Цитата
В файле, содержащем строки, содержатся русские имена.
А ты что предлагаешь?
18192123, ты, наконец, FAQ начнешь читать, или будешь постить бесконечно непонятно откуда взявшиеся задания? Сколько можно уже? Практически одно и то же везде
Здесь: Строки я выкладывал функцию StrUpper, которая корректно переводит любую строку в верхний регистр... Переделай ее для работы с одним символом и используй, ибо стандартный UpCase с кириллицей НЕ работает...
Sundery
11.01.2007 4:47
Цитата(volvo @ 11.01.2007 1:31)
С какой стати? Задание читаем ВНИМАТЕЛЬНО!
А ты что предлагаешь?
18192123, ты, наконец, FAQ начнешь читать, или будешь постить бесконечно непонятно откуда взявшиеся задания? Сколько можно уже? Практически одно и то же везде
Здесь: Строки я выкладывал функцию StrUpper, которая корректно переводит любую строку в верхний регистр... Переделай ее для работы с одним символом и используй, ибо стандартный UpCase с кириллицей НЕ работает...
читаю оочень внимательно! во втором сообщении автор написал [A..Z], а на каком языке не указано (сказано лишь что имена русские), поэтому я предположил что на транслите.
еще не известно какая кодировка. если досовкая, то вот так:
assign(f,'123.txt'); reset(f); i:=1; while not eof(f) do begin readln(f,s[i]); tmp:=ord(s[i,1]); if tmp in [160..175] then s[i,1]:=chr(tmp-32) else if tmp in [224..239] then s[i,1]:=chr(tmp-80); writeln(s[i]); i:=i+1; end;
а если нет, то тогда только по предложенной функции.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.