![]() |
|
|
Регистрация | << Правила форума >> | 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
|
|||
|
|||
![]() Цитата:
|