??db2
{16,16,1,1,1,1,1,1,1,1,1,1,1,1,1}, / / ??cf1
{15,15,15,19,1,1,1,1,1,1,1,1,1,1,1}, / / ??denm
{16,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, / / ??cf0
{1,1,1,1,1,1,1,1,1,1,1,1,1,2,0}, / / ??razd
{15,15,22,1,1,1,1,1,1,1,1,1,1,1,1}, / / ??denf
{16,16,16,16,16,16,16,16,1,1,1,1,1,1,1} / / cf3
}; («matrica n"); (i=0; i <23; i + +) {for (j=0; j <15; j + +) printf ("% 4d» , tabl [i] [j]); printf (" n");}; ch, inpstr [80]; (« n ENTER STRING»);=0; ((ch=getch ())!=13 && i <80 )
{putch (ch); [i + +]=ch;} [i]=« 0»;=i - 1; (« n input string:»); (inpstr ); (« n");=2; (i=0; i <= kol; i=i +1)
{tsymb=inpstr [i]; (tsymb)
{case «0»: slsost=tabl [tsost] [0]; break; «1»: slsost=tabl [tsost] [1]; break; «2»: slsost=tabl [tsost] [2]; break; «3»: slsost=tabl [tsost] [3]; break; «4»: slsost=tabl [tsost] [4]; break; «5»: slsost=tabl [tsost] [5]; break; «6»: slsost=tabl [tsost] [6]; break; «7»: slsost=tabl [tsost] [7]; break; «8»: slsost=tabl [tsost] [8]; break; «9»: slsost=tabl [tsost] [9]; break; «{»: slsost=tabl [tsost] [10]; break; «}»: slsost=tabl [tsost] [11]; break; «/»: slsost=tabl [tsost] [12]; break; «;»: slsost=tabl [tsost] [13]; break; «#»: slsost=tabl [tsost] [14]; break;: slsost=1;} («% 5d n», slsost); =Slsost;
}; (slsost)
{case 1: cout << « n STRING is WRONG n»; break; 0: cout << « n STRING is RIGHT n»; break;}
return 0;
};
Реалізація кінцевого автомата засобами ООП:
/ / заголовний файл konavt.h опис класу кінцевого автоматаkonavt {int kolsost ;/ / число станів автоматаkolsimv ;/ / число символів вхідного алфавіту * alfavit;// Вхідний алфавітnachstate;// Початкове состояніеkolkon ;/ / число заключних станів * fin;// Заключні стану ** per ;/ / матриця переходовdlina ;/ / поточна довжина вхідний цепочкіdlina0 ;/ / початкова довжина вхідного ланцюжка * vxod ;/ / вхідна цепочкаavtstate;// Поточний состояніеnomstep ;/ / номер кроку автомата * protokol ;/ / протокол роботи автомата: bool error;// Ознака помилки () ;/ / конструктор без параметровshow_sost () ;/ / перевірка заповнення матріциsled () ;/ / спрацьовування переходовshow () ;/ / показ поточного стану; init () ;/ / ініціалізація нової строкойkonec () ;/ / перевірка фінальності состояніяzaversh ();// Перевірка вичерпання строкіproverka () ;/ / перевірка приналежності символів алфавітом
};
/ / Файл реалізації класу автомата konavt.cpp
# include «konavt.h»
# include
# include
# include
# include
/ / конструктор :: konavt ()
{int i, j, vyb;
/ / можливий введення вихідних даних як з файлу, так і з клавіатури
cout << «constructor working ...» << endl; << «Istochnik dannyx (0-klaviatura ,1-file)» << endl;
cin >> vyb;
/ / введення з клавіатури (vyb == 0)