Динамические структуры данных. Задание практикума. Язык Паскаль. Вылиток А.А - 42 стр.

UptoLike

- 42 -
begin new(q);
q.word:= word;
q.length:=length;
q.next:= nil{= p.next};
p.next:= q
end {insert};
procedure print(p: list);
{печатает слова из списка с заглавным звеном}
begin p:=p.next;
while p < > nil do
begin write(p.word,'9');
p:=p.next
end;
writeln;
end {print};
function amount(p: list; letter: char;
length: size):integer;
{подсчитывает количество слов в списке, удовлетворяющих
условию: длина равна length и буква letter входит в
слово не менее двух раз}
var k,m,i:integer;
begin
k:=0; p:= p.next;
while p < > nil do
begin
if p.length=length then
begin m:=0;
for i:=1 to length do
if p.word[i]= letter then m:= m+1;
if m>= 2 then k:= k+1
end;
p:=p.next
end;
amount:= k
end {amount};
begin {построение заглавного звена списка}
new(L); L.next:= nil;
writeln('Введите текст:');
p:=L; {p установили на начало пустого списка}
repeat i:=0; word:= template; read(c);
{ввод очередного слова word из файла input}
repeat i:=i+1; word[i]:= c; read(c);
until (c = ',') or (c='.');
begin new(q);
  q↑.word:= word;
  q↑.length:=length;
  q↑.next:= nil{= p↑.next};
  p↑.next:= q
end {insert};

procedure print(p: list);
{печатает слова из списка с заглавным звеном}
begin p:=p↑.next;
  while p < > nil do
    begin write(p↑.word,'9');
           p:=p↑.next
    end;
  writeln;
end {print};

function amount(p: list; letter: char;
                           length: size):integer;
{подсчитывает количество слов в списке, удовлетворяющих
 условию: длина равна length и буква letter входит в
 слово не менее двух раз}
var k,m,i:integer;
begin
  k:=0;    p:= p↑.next;
  while p < > nil do
    begin
      if p↑.length=length then
         begin m:=0;
           for i:=1 to length do
              if p↑.word[i]= letter then m:= m+1;
           if m>= 2 then k:= k+1
         end;
      p:=p↑.next
    end;
  amount:= k
end {amount};

begin {построение заглавного звена списка}
  new(L); L↑.next:= nil;
  writeln('Введите текст:');
  p:=L; {p установили на начало пустого списка}
  repeat i:=0; word:= template; read(c);
    {ввод очередного слова word из файла input}
    repeat i:=i+1; word[i]:= c; read(c);
    until (c = ',') or (c='.');


                              - 42 -