ПАСКАЛЬ. Срочно!
10-11 класс
|
Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Найти количество слов в строке.
Готово.................Это если между словами всегда один пробел.
UPD.Заменил ,теперь не важно сколько пробелов
const
Blanks = [' '];
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.
Другие вопросы из категории
Одноклеточная амеба каждые 3 часа делится на 2 клетки. Определить сколько амеб будет через 3,6,9,12,....24 часа?
К визуальной компоненте для выбора значений относится:
1. Label
2. Shape
3. SpinEdit
4. Image
5. ListBox
воспринимается 6-. измеряется. 7. принимается 8-. передается. 9-разрушается 10-передается
Читайте также
Дан массив строк без пробелов. Напечатать строки, вторая половина которых не содержит цифры.
хотя если вывод поставить в процедуру тогда все нормально.
program kr_pr_4;
procedure fgerona(a,b,c:real);
var
p,s:real;
begin
p:=(a+b+c)/2;
s:= sqrt(p*(p-a)*(p-b)*(p-c));
end;
var
a,b,c,s,p:real;
begin
writeln('Введите сторону А');
read(a);
writeln('Введите сторону B');
read(b);
writeln('Введите сторону C');
read(c);
fgerona(a,b,c);
writeln('S = ',s);
end.
в одномерном массиве М[15] вычислить сумму четных чисел
элементы массива.в паскале.срочно!!