Описать функцию, подсчитывающую количество слов списка L, которые начинаются с той же литеры, что и следующее слово — Pascal(Паскаль)

program g;

type
  te = char;
  slovo = packed array [1 .. 50] of te; { по условию }

  link = ^kom; { начало создания списка }

  kom = record
    ini: slovo;
    next: link;
  end; { конец создания списка }

procedure add(var n: link; x: slovo; num: integer);
{ данная процедура добавляет в список "n" элемент "x" на порядковое место "num" }
var
  neo, ind: link;
  i: integer;
begin
  new(neo);
  neo^.ini := x;
  if n = nil then
  begin
    n := neo;
    neo^.next := nil;
  end
  else if num = 1 then
  begin
    neo^.next := n;
    n := neo;
  end
  else
  begin
    i := 0;
    ind := n;
    while (i <> num - 2) and (ind^.next <> nil) do
    begin
      i := i + 1;
      ind := ind^.next;
    end;
    neo^.next := ind^.next;
    ind^.next := neo;
  end;
end; { КОНЕЦ процедуры add }

{ ****************************************** }
function veiwLkolvo(n: link): integer;
{ функция определяющая КОЛ-ВО, требовающееся в задании }
var
  ind: link;
  slotek1, slotek2: slovo;
  i, kolvo: integer;
begin
  ind := n;
  i := 0;
  kolvo := 0; { обнуляем счётчик КОЛ-ва, требуемого в задаче }
  if ind = nil then
    writeln('List is empty')
  else
  begin
    while ind <> nil do
    begin { начало считывания списка }
      i := i + 1;
      if i = 1 then
        slotek2 := ind^.ini
      else
      begin
        slotek1 := slotek2;
        slotek2 := ind^.ini;
      end; { считываем 2 слова со списка }
      if i <> 1 then
        if slotek1[1] = slotek2[1]
        then { если выполняется требуемое условие "начинаются с той же литеры" }
          inc(kolvo); { то увеличиваем счётчик КОЛ-ВА }
      ind := ind^.next;
    end;
  end;
  veiwLkolvo := kolvo; { присваеваем это КОЛ-ВО самой функции }
end; { КОНЕЦ ФУНКЦИИ }
{ ****************************************** }

var
  sl: slovo;
  i, n: integer;
  L: link;

begin
  write('Vvedite kol-vo slov v spiske: ');
  readln(n); { считываем размер списка }
  writeln('Vvedite sam SPISOK L: ');
  for i := 1 to n do
  begin
    write(i, ' slovo= ');
    readln(sl);
    add(L, sl, i);
  end; { считываем сам список }

  writeln('OTVET= ', veiwLkolvo(L)); { выводим РЕЗУЛЬТАТна экран }
  readln;
  readln;

end.

Leave a Comment