Курсовая работа: Нейминг. Разработка генератора

После разбиения всех введенных слов на слоги запускается функция группировки слогов в слова (group($k)). У неё только один входной параметр – количество слогов в новых словах.

В основе этой функции лежит алгоритм размещения с повторениями чисел 1..n в последовательности по kэлементов.[5]

Рассмотрим эту функцию.

function group($k)

{

$f=fopen("slogi.txt","rt");//откроемфайл slogi.txt

$a=explode("-",fgets($f));//запишем слоги в масс. а

fclose($f); //закроемфайл

$n=count($a)-1; //посчитаемколичествослогов

for($i=0;$i<$k;$i++){

$x[$i]=1; //зададим начальную и

$y[$i]=$n;} //конечную комбинацию чисел

while(prov($x,$y)) //пока они различны

{$p=$k; //пост. инд. в конец посл-ти

while($x[$p]==$n)//пока не найдем эл-т, отличный от

$p--; //максимального, уменьш. р

$x[$p]++; //увелич р-й эл-т послед-ти

for($i=$p+1;$i<$k;$i++)

$x[$i]=1; //все след-ие делаем единицами

if(correct($x)) //если комбинация нам подходит

{for($i=0;$i<$k;$i++) //выводим слоги с соотв.

{ print $a[$x[$i]-1];}//номерами на экран

echo "<br>";} //переход на новую строку}

Эта функция вызывает prov($x, $y)и correct($x). Функция prov($x, $y)следит за совпадением начальной и конечной комбинациями. Это осуществляется методом простого перебора всех элементов массивов x и y. Если в результате количество совпадающих элементов равно количеству элементов в любом из массивов, то возвращается 0 (и алгоритм размещений с повторениями заканчивает свою работу).

function prov($x, $y)

{

$fl=0;

for($i=0;$i<count($y);$i++)

if($x[$i]==$y[$i]) $fl++;

К-во Просмотров: 706
Бесплатно скачать Курсовая работа: Нейминг. Разработка генератора