2014-03-13 3 views
0

Мне пришлось разработать мини-программу, которая генерирует слова из заданных букв и некоторых правил. Я сделал это на PHP, и он отлично работает, НО: теперь мне нужен этот код, переведенный на C или C++. Я попытался реализовать его, но у меня есть проблемы со строковыми массивами. Более того, я не очень хорош в C, даже C++. Кто-нибудь, пожалуйста, помогите мне реализовать этот код. Сделаю что-нибудь для вас, если смогу. Спасибо. Вот код прилагается:PHP-код, который генерирует слова в код C, C++

<?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); 

?> 

ответ

2

Я хотел бы предложить, чтобы посмотреть на std::vector, который представляет массивы, которые могут изменяться в размерах.

Для ассоциированных массивов (массив ("S" => "как")), вы можете посмотреть на std::map или станд :: unordered_map

Смежные вопросы