Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / lab3 / func

.cpp
Скачиваний:
9
Добавлен:
17.04.2013
Размер:
1.21 Кб
Скачать
#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;
}

Соседние файлы в папке lab3