PHP-код, который генерирует слова в C, C ++ код

0

Мне пришлось разработать мини-программу, которая генерирует слова из заданных букв и некоторые правила. Я сделал это на PHP, и он отлично работает, НО: теперь мне нужен этот код, переведенный на C или C++. Я попытался реализовать его, но у меня есть проблемы со строковыми массивами. Более того, я не очень хорош в 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);

?>
Теги:
arrays

1 ответ

2

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню