![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Нужно сваять вот такое...((
Форматирование текста. Дан текст, состоящий из предложений, разделяемых точками. Напишите программу, производящую следующее форматирование: после каждой точки в конце предложения должен стоять хотя бы один пробел; первое слово в предложении должно начинаться с прописной буквы. Замечание. Текст может быть как на русском, так и на английском языке. |
|
#2
|
|||
|
|||
|
ICQ: 410691984
|
|
#3
|
|||
|
|||
|
Фигня!
Режем текст по точкам на подстроки. Далее первую букву каждой строки делвем большой (AnsiUpperCase поможет). и в конце склеиваем их через пробел. Нужны функции Pos, Copy, AnsiUpperCase, цикл и немного головы ![]() |
|
#4
|
|||
|
|||
|
конечно можно оптимизировать, но нужно ли?
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
CurPos, LastPos:Cardinal;
Findstr, VrStr:String;
begin
CurPos:=0;
LastPos:=0;
VrStr:=Memo1.Text;
repeat
Findstr:=RightStr(VrStr,length(VrStr)-LastPos+1);
CurPos:=pos('.',Findstr);
LastPos:=LastPos+CurPos;
if Findstr[CurPos+1]<>' ' then
begin
if LastPos=CurPos then
begin
Insert(' ',VrStr,LastPos+1);
end
else
Insert(' ',VrStr,LastPos);
end;
if LastPos=CurPos then
begin
if (ord(VrStr[LastPos+2]) in [224..255]) or (ord(VrStr[LastPos+2]) in [97..122]) then
begin
VrStr[LastPos+2]:=chr(Ord(VrStr[LastPos+2])-32);
end;
if (ord(VrStr[LastPos+2])=184) then VrStr[LastPos+2]:=chr(Ord(VrStr[LastPos+2])-16);
end
else
begin
if (ord(VrStr[LastPos+1]) in [224..255]) or (ord(VrStr[LastPos+1]) in [97..122]) then
begin
VrStr[LastPos+1]:=chr(Ord(VrStr[LastPos+1])-32);
end;
if (ord(VrStr[LastPos+1])=184) then VrStr[LastPos+1]:=chr(Ord(VrStr[LastPos+1])-16);
end;
until CurPos=0;
Memo1.Text:=VrStr;
end; Последний раз редактировалось Rjkzy, 18.06.2010 в 09:13. |
|
#5
|
|||
|
|||
|
Цитата:
|