2014-03-13 47 views
0

我不得不開發一個迷你程序,它可以根據給定的字母和一些規則生成單詞。我在PHP中做了這個,它工作的很好,但是:現在我需要將這些代碼轉換爲C或C++。我試圖實現它,但是我有一些字符串數組的麻煩。而且,我不擅長C,甚至C++。 有人請幫我實施這段代碼。如果可以的話,我會盡力幫你。謝謝。 這裏是連接代碼:生成單詞到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); 

?> 

回答

2

我建議看看std::vector表示,可以改變大小的陣列。

對於關聯數組(array(「S」=>「aS」)),您可以查看std::map或std :: unordered_map