Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:16_II / машина Тьюринга
.cpp#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;
}
Соседние файлы в папке 16_II