0
주어진 문자와 규칙으로 단어를 생성하는 미니 프로그램을 개발해야했습니다. 나는 PHP에서 이것을했고 훌륭하게 작동하지만, 이제 C 또는 C++로 변환 된이 코드가 필요하다. 구현하려고 시도했지만 문자열 배열에 문제가 있습니다. 게다가, 저는 C, 심지어 C++에서도 좋지 않습니다. 누군가이 코드를 구현하도록 도와주세요. 내가 할 수 있다면 당신을 위해 슬픔을 줄 것입니다. 고맙습니다. 여기에 부착 된 코드입니다 : 내가 크기 변경할 수 배열을 나타냅니다 std::vector보고 제안C, C++ 코드로 단어를 생성하는 PHP 코드
<?php
$val_n = array("S","D","R");
$val_t = array("a","b","c","d","f");
$reguli = array(
array("S" => "aS"),
array("S" => "bD"),
array("S" => "fR"),
array("D" => "cD"),
array("D" => "dR"),
array("R" => 'bR')
);
$rez = array();
$pas = array();
$parcurgere = array();
$parc_sf = array();
function generare($val_n, $reguli, $cuvint, $parcurgere)
{
global $rez;
global $pas;
global $parcurgere;
global $parc_sf;
if(strlen($cuvint) >= 6)
{
if($cuvint[strlen($cuvint) -1] == 'R')
{
$cuvint[strlen($cuvint) -1] = "f";
if(! in_array($cuvint, $rez))
{
$rez[] = $cuvint;
array_push($parc_sf,$cuvint[strlen($cuvint) -1] = "f");
array_push($pas,$parcurgere);
}
} else if($cuvint[strlen($cuvint) -1] == 'D')
{
$cuvint[strlen($cuvint) -1] = "d";
if(! in_array($cuvint, $rez))
{
$rez[] = $cuvint;
array_push($parc_sf,$cuvint[strlen($cuvint) -1] = "d");
array_push($pas,$parcurgere);
}
}
} else if($cuvint[strlen($cuvint) -1] != 'f' || $cuvint[strlen($cuvint) -1] != 'd')
{
foreach($reguli as $reg)
{
if(isset($reg[substr($cuvint, -1)]))
{
$pasi = $reg[substr($cuvint, -1)];
array_push($parcurgere,$pasi);
$cuvint .= $reg[substr($cuvint, -1)];
//$cuvint[strlen($cuvint)-3] = '';
generare($val_n, $reguli, $cuvint, $parcurgere);
}
}
}
}
$cuvint = "S";
$pasi = '';
generare($vn, $reguli, $cuvint, $parcurgere);
?>