function PosBlank(s: string; pn, pk: integer): integer; { Ищет в строке s в позициях от pn до pk пробельный символ. Возвращает его позицию в строке или ноль, если таковой символ не найден. Использует подмножество пробельных символов Blanks, что позволяет определять произвольный набор пробельных символов (например, табуляцию и т.д.) } var p: integer; flag: boolean;
begin p := pn; flag := true; while flag and (p <= pk) do begin if s[p] in Blanks then flag := false else p := p + 1 end; if p > pk then PosBlank := 0 else PosBlank := p end;
function PosNonBlank(s: string; pn, pk: integer): integer; { Ищет в строке s в позициях от pn до pk непробельный символ. Возвращает его позицию в строке или ноль, если таковой символ не найден. Использует подмножество пробельных символов Blanks, что позволяет определять произвольный набор пробельных символов (например, табуляцию и т.д.) } var p: integer; flag: boolean;
begin p := pn; flag:=true; while flag and (p <= pk) do begin if s[p] in Blanks then p := p + 1 else flag := false end; if p > pk then PosNonBlank := 0 else PosNonBlank := p end;
var s: string; i, l, k: integer;
begin Write('Введите строку: '); Readln(s); l := Length(s); k := 0; i := PosNonBlank(s, 1, l); while (i>0) and (i <= l) do begin k := k + 1; i := PosBlank(s, i + 1, l); if i = 0 then i := l + 1 else i := PosNonBlank(s, i + 1, l) end; Writeln('Количество слов в строке равно ', k) end.
Program Tlg; var s:string; i,n:integer; p:real; begin Writeln('Введите текст телеграммы, разделяя слова ровно одним пробелом'); Readln(s); Write('Укажите стоимость слова в рублях: '); Read(p); n:=1; for i:=1 to length(s) do if s[i]=' ' then Inc(n); Writeln('Стоимость телеграммы, руб: ',n*p:0:2) end.
Тестовое решение: Введите текст телеграммы, разделяя слова ровно одним пробелом Грузите апельсины бочками братья Карамазовы Укажите стоимость слова в рублях: 3.78 Стоимость телеграммы, руб: 18.90
program RevStr; var s,s1:string; i,j,n:integer; begin Write('Исходная строка: '); Readln(s); s:=' '+s; n:=length(s); i:=n; j:=n; s1:=''; while i>0 do begin j:=i; while (s[j]=' ') and (j>1) do Dec(j); { удалили пробелы } i:=j; while (s[j]<>' ') and (j>1) do Dec(j); { пробежали по непробелам } if j>0 then s1:=s1+' '+Copy(s, j+1, i-j); i:=j-1 end; s1:=Copy(s1,2,length(s1)-1); Writeln(s1) end.
Тестовое решение: Исходная строка: А роза упала на лапу Азора Азора лапу на упала роза А
Журналы , брошюры , буклеты , каталоги?