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

16_II / машина Тьюринга

.cpp
Скачиваний:
18
Добавлен:
10.02.2015
Размер:
1.76 Кб
Скачать
#include<iostream.h>

int main(int argc, char* argv[])
{
	const int n = 100, m = 4, s = 5;
	char a[n], b[n];
	enum sst {q1, q2, q3, q0};
	enum direc {L, R, H};
	int i, t;
	for (i = 0; i < n; i++)
	{
		a[i] = ' ';
		b[i] = ' ';
	}
	struct machine 
	{
		char sym;
		sst cond;
		direc move;
	};

	machine table [m][n];
	cout << "enter elements ";
	for (i = 50; i < n; i++)
		cin >> a[i];
	table [q1][' '].sym = ' ';
	table [q1][' '].cond = q1;
	table [q1][' '].move = R;
	table [q1]['0'].sym = '0';
	table [q1]['0'].cond = q1;
	table [q1]['0'].move = R;
	table [q1]['1'].sym = '1';
	table [q1]['1'].cond = q3;
	table [q1]['1'].move = R;
	table [q1]['*'].sym = ' ';
	table [q1]['*'].cond = q0;
	table [q1]['*'].move = H;
	table [q2][' '].sym = ' ';
	table [q2][' '].cond = q1;
	table [q2][' '].move = R;
	table [q2]['0'].sym = '*';
	table [q2]['0'].cond= q3;
	table [q2]['0'].move = L;
	table [q2]['1'].sym = '1';
	table [q2]['1'].cond= q2;
	table [q2]['1'].move = L;
	table [q2]['*'].sym = '*';
	table [q2]['*'].cond= q2;
	table [q2]['*'].move = L;
	table [q3][' '].sym = '1';
	table [q3][' '].cond= q2;
	table [q3][' '].move = H;
	table [q3]['0'].sym = ' ';
	table [q3]['0'].cond= q2;
	table [q3]['0'].move = H;
	table [q3]['1'].sym = '1';
	table [q3]['1'].cond= q3;
	table [q3]['1'].move = R;
	table [q3]['*'].sym = '*';
	table [q3]['*'].cond= q3;
	table [q3]['*'].move = R;
	i =50;
	t =0;
	direc mv;
	sst q = q1;
	while (i < 50)
	{
		if (q == q0) break;
		b[i] = 	table [q][a[i]].sym;
		q = table [q][a[i]].cond;
		mv = table [q][a[i]].move;

		switch (mv)
		{
		case R : i++; break;
		case L : i--; break;
		}
		t++;
	}
	for ( i = 0; i < n; i++)
		cout << b[i];
	return 0;
}