type DKH=array[0..4] of shortint; DPH=array[1..13] of shortint; DFH=array[0..4,0..13] of shortint; _________________________________________________________________________ глобально определены: dPol,dPol2,dPol3,pi:DPH; dIol:DKH; dFol,dFol2:DFH; _________________________________________________________________________ локально определены: var di,dj,dk,dw,dk2:DKH; pi:DPH; ff:DFH; kaV2:real; i,j,k,w,kaV:integer; kM:array[1..5]of shortint; ______________________________________________________________________________ перед запуском процедуры,в теле основной программы определяются следующие основные массивы: dPol - содержит количество свободных, оставшихся в колоде рангов. Ранги от 1 до 13. Где 1-туз, 2- двойка и.т.д.Соот-но для каждого индекса в рельности может принимать значения от 0 до 4. Перед нижеуказанным процессом определен для все вышедших уже карт(включая карту вскрышки дилера) dIol - этот массив имеет значения идексов от 0 до 4,и указывает в каком количестве имеются полные ранги. Т.е. в начале работы он имеет dIol[4]=13, dIol[3]=0 ... при выходе какой-либо карты dIol[4]=12 (наборов рангов с 4-мя свободными картами осталось 12, dIol[3]=1 свобоных рангв с 3-мя картами есть 1 в наличии). Также определен для всех вышедших карт перед нижеследущим. dFol - заточенный на мать двумерный массив. в первом индексе номер масти( у меня от 0 до 3), во втором указка на ранг(от 1 до 13). Значение dFol[2,7]=1 например означает что 7-ка бубей не вышла, =0 означало бы что вышла. при втором индексе равном нулю выводит общее число оставшихся мастей. dFol[3,0]=12 например означает что крестей осталось 12 в колоде.Также уже предопределен перед нижеследущем. dilRang, dilMast - Ранг и масть карты дилера. ym - карты игрока. Разложен по порядку. ym[1]..ym[5] в порядке возрастания. Itog, Stay - количество комбинаций дилера меньших и равных игроку _______________________________________________________________________________ Начало локальной процедуры di:=dIol;di[dPol[dilRang]]:=di[dPol[dilRang]]-1; ff:=dFol;ff[dilMast,dilRang]:=1;ff[dilMast,0]:=ff[dilMast,0]+1; {здесь определяются массивы, не учитывающие вышедшую карту дилера. Так надо)} Itog:=0; _______________________________________________________________________________ if (dilRang>1) and (dilRang<13) and (dilRang<=ym[3]) then {этот процесс идет, если ранг дилера не туз и не король, и не выше 3-ей карты игрока} begin dk:=di;dk[dPol[1]]:=dk[dPol[1]]-1;dk[dPol[13]]:=dk[dPol[13]]-1; if dk[dPol[1]]<0 then dk[dPol[1]]:=0;if dk[dPol[13]]<0 then dk[dPol[13]]:=0; kM[2]:=dFol[dilMast,0]-dFol[dilMast,1]-dFol[dilMast,13]; for i:=ym[3] to 12 do begin dk[dPol[i]]:=dk[dPol[i]]-1;if dk[dPol[i]]<0 then dk[dPol[i]]:=0;kM[2]:=kM[2]-dFol[dilMast,i]; end; for k:=1 to 4 do for w:=1 to 4 do begin dj:=dk;kM[1]:=kM[2]; dw:=dj;dw[k]:=dw[k]-1;if dw[k]<0 then dw[k]:=0; if dilRang