Курсовая работа: Некоторые способы разбиения множеств

Pot^.next:=nil

End

Else begin {иначе инициализируем понятие до конца }

Pot:=pot^.next;

Pot^.s:=pot^.s+')'; { закрываем скобку }

Pot ^. next := nil ; {указываем, что это понятие последнее в списке }

Pot ^. p := I {указываем количество элементов, содержащихся в понятии }

End

End ;

For j := k 1-1 downto 2 do begin { k 1 сейчас показывает количество подпонятий последнего понятия плюс 1. Поэтому в этом цикле, который попытается определить следующую комбинацию понятий и используется переменная k 1. Эта часть программы рассматривает случай, когда подпонятия будут ставать не следующими по списку подпонятиями (по крайней мере не все), а будут происходить другие переходы. То есть этот цикл рассчитан на то, чтобы не позволить подпонятию с большим номером по списку в понятии быть большим по абсолютному адресу (по времени создания) }

If (str1[j]^.next=str1[j-1]) and (str1[j+1]=str1[j]) or ((j=k1-1) and (str1[j]<>

Str 1[ j -1])) then begin {если за подпонятием с номером j по списку следует подпонятие с номером j -1 и подпонятия с номером j и j +1 совпадают, или j равно количеству подпонятий и последние два понятия совпадают (сравнение идет по абсолютным адресам расположения понятий в памяти), то }

str 1[ j ]:= str 1[ j ]^. next ; {подпонятие с номером j переходит на следующее за списком подпонятие }

For j := J +1 to k 1-1 do str 1[ j ]:= f ; {а все следующие подпонятия, становятся равными первому (элементарному) подпонятию }

goto met {хотя применение оператора безусловного перехода считается плохим стилем программирования, но здесь он оправдан, дабы не запутывать программу новыми циклами }

End ;

End ;

For j := k 1-1 downto 2 do begin { нов ы й цикл, который переключит соответствующие подпонятия. Мы выделяем это в новый цикл, так как нужно было проверить на наличие “граничных” переходов (см. предыдущий цикл) }

If str 1[ j ]<> str 1[ j -1] then begin { если подпонятия с номерами j и ( j -1) не совпадают, то }

Str 1[ j ]:= str 1[ j ]^. next ; {подпонятие с номером j становится следующим по списку (времени создания подпонятием) }

For j := j +1 to k 1 do str 1[ j ]:= f ; {а все идущие за ним подпонятия в списке подпонятий, составляющих понятие становятся элементарными }

goto met {выходим из цикла }

End

End ;

Str 1[1]:= str 1[1]^. next ; {если не выполнились условия предыдущих двух циклов, то пора переключать первое подпонятие }

for j :=2 to i do str 1[ j ]:= f ; { и, соответствено, следующие подпонятия сделать элементарными }

Met: end

End;

Close(fil);{ закр ыть файл }

К-во Просмотров: 327
Бесплатно скачать Курсовая работа: Некоторые способы разбиения множеств