Помощь - Поиск - Пользователи - Календарь
Полная версия: Строчные и прописные буквы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
18192123
В файле, содержащем строки, содержатся русские имена. Проверить, все ли они начинаются с прописной буквы, если нет, то исправить эту ошибку. Записать полученные данные в новый файл.

трудность в том, что не знаю , как проверить и исправить ошибку.
предполагается, что имена разделяются в строке пробелом.
18192123
может как то использовать такое выражение

upcase(s[i]) in ['A'..'Z']
?
Sundery

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
Цитата
вроде бы то, что тебе надо
С какой стати? Задание читаем ВНИМАТЕЛЬНО!

Цитата
В файле, содержащем строки, содержатся русские имена.
А ты что предлагаешь?

18192123, ты, наконец, FAQ начнешь читать, или будешь постить бесконечно непонятно откуда взявшиеся задания? Сколько можно уже? Практически одно и то же везде dry.gif

Здесь: Строки
я выкладывал функцию StrUpper, которая корректно переводит любую строку в верхний регистр... Переделай ее для работы с одним символом и используй, ибо стандартный UpCase с кириллицей НЕ работает...
Sundery
Цитата(volvo @ 11.01.2007 1:31) *

С какой стати? Задание читаем ВНИМАТЕЛЬНО!

А ты что предлагаешь?

18192123, ты, наконец, FAQ начнешь читать, или будешь постить бесконечно непонятно откуда взявшиеся задания? Сколько можно уже? Практически одно и то же везде dry.gif

Здесь: Строки
я выкладывал функцию 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;


а если нет, то тогда только по предложенной функции.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.