Добавил:
korayakov
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;
string func(string ptr)
{
string str="S"; //Искомый путь.
while(str.find_first_of("ABCDES",0)!=-1)
{
// Правило S->aAB|E
int pos=str.find_first_of("ABCDES",0);
if(str[pos]=='S')
{
if(ptr[pos]=='a') str.replace(pos,1,"aAB");
else str.replace(pos,1,"E");
}
// Правило A->dDA|пустой символ
pos=str.find_first_of("ABCDES",0);
if(str[pos]=='A')
{
if(ptr[pos]=='d') str.replace(pos,1,"dDA");
else str.replace(pos,1,"");
}
// Правило B->bE|f
pos=str.find_first_of("ABCDES",0);
if(str[pos]=='B')
{
if(ptr[pos]=='b') str.replace(pos,1,"bE");
if(ptr[pos]=='f') str.replace(pos,1,"f");
if(ptr[pos]!='b'&&ptr[pos]!='f') break;
}
// Правило D->eA
pos=str.find_first_of("ABCDES",0);
if(str[pos]=='D')
{
if(ptr[pos]=='e') str.replace(pos,1,"eA");
if(ptr[pos]!='e')
break;
}
// Правило E->fA|g
pos=str.find_first_of("ABCDES",0);
if(str[pos]=='E')
{
if(ptr[pos]=='f') str.replace(pos,1,"fA");
if(ptr[pos]=='g') str.replace(pos,1,"g");
if(ptr[pos]!='f'&&ptr[pos]!='g') break;
}
}
return str;
}