#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;
bool proverka(string word)
{
int i = 0;
int state = 'H';
while (word[i] != '\0')
{
switch (state)
{
case 'H':
{
if (word[i] == '0') {
state = 'X'; break;
}
else if (word[i] == '1') {
state = 'B'; break;
}
else return false;
}
case 'B':
{
if (word[i] == '0') {
state = 'Y'; break;
}
else return false;
}
case 'X':
{
if (word[i] == '0') {
state = 'Y'; break;
}
else return false;
}
case 'Y':
{
if (word[i] == '0') break;
else if (word[i] == '1') {
state = 'B'; break;
}
else return false;
}
}
i++;
}
if (state == 'X' || state == 'Y') return true;
else return false;
}
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "Russian");
string word;
cout << "Введите строку: ";
cin >> word;
if (proverka(word))
cout << "Строка принадлежит грамматике.";
else
cout << "Строка не принадлежит грамматике.\n";
return 0;
}