Описать функцию, подсчитывающую количество слов списка L, которые начинаются с той же литеры, что и следующее слово
Категория: Delphi/Pascal
2012-02-19 18:14:13
code: #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.
Поделиться: