Задача с функцыей на Паскале.Помогите.
Вот все к чему я смог додуматься,но ничего не выходит.
program funki;
var
str:string;
k,i,r:integer;
function f(st:string):integer;
var
p,g,k:integer;
begin
for i:=1 to length(st) do
if st='.' THEN
begin
p:=i;
for k:=p+1 to length(st) do
if st[k]='.' then
g:=k;
if k<>p then
f:=g-p
else
f:=p;
end;
end;
begin
read(str);
r:=f(str);
writeln(r);
end.
Нужно решить такую задачу: Найти самое длинное приложение в тексте и вывести его на печать.(Искать конец приложения можно только по крапке).Задачу надо решить с помощью ФУНКЦИИ!
Вот все к чему я смог додуматься,но ничего не выходит.
program funki;
var
str:string;
k,i,r:integer;
function f(st:string):integer;
var
p,g,k:integer;
begin
for i:=1 to length(st) do
if st='.' THEN
begin
p:=i;
for k:=p+1 to length(st) do
if st[k]='.' then
g:=k;
if k<>p then
f:=g-p
else
f:=p;
end;
end;
begin
read(str);
r:=f(str);
writeln(r);
end.
Если признок конца и начала предложения есть ".", то можно так, наверное,
program funki;
uses CRT;
var st:string;
k, i1, i2, x, max, max1, max2 : integer;
function f (var i1, i2 : integer) : integer;
var s : integer;
begin
s := 0;
i1 := k; {к - глобальная}
while (k <= length (st)) and
(st [k] <> '.') do
begin
inc (s); {s := s + 1}
inc (k); {k := k + 1}
end;
i2 := k;
inc (k);
f := s
end;
begin
clrscr;
writeln ('ВВЕДИТЕ ТЕКСТ');
READ (st);
while k <= length (st) do
begin
x := f (i1, i2);
if x > max
then begin
max := x;
max1 := i1;
max2 := i2
end
end;
writeln ('САМОЕ ДЛИННОЕ ПРЕДЛОЖЕНИЕ - ',COPY (st, max1, max2 - max1 + 1));
repeat until keypressed
end.
Ну, все это, конечно, на копьютере никто на проверял, поэтому четр знает, как это работает...
Короче говоря, смысл в том, что функция ищет длину очередного предложения и возвращает с какой позиции оно начинается и на какой заканчивается.....ВОТ!
Если признок конца и начала предложения
...
...
skipped
За искключением того, что в самом начале (после Read(st)) нужно инициализировать k(:=1) и max(:=0), прога правильна.
За искключением того, что в самом начале (после Read(st)) нужно инициализировать k(:=1) и max(:=0), прога правильна.
Ты прав, прав и там, там, в смысле во всем...:D :D :D