1 Nisan 2014 Salı

(a|b)*abb ifadesini gösteren DFA'nın C++ kodu

Programı geçen sene yazmıştım ödev için belki birilerinin işine yarayabilir.

#include <iostream>
#include <conio.h>

using namespace std;

int durumGetir(int durum, char harf)
{
short int sonuc = -1;
switch (durum)
{
case 0: (harf == 'a') ? sonuc = 1 : sonuc = 0; break;
case 1: (harf == 'a') ? sonuc = 1 : sonuc = 2; break;
case 2: (harf == 'a') ? sonuc = 1 : sonuc = 3; break;
case 3: (harf == 'a') ? sonuc = 1 : sonuc = 0; break;
default: sonuc = -1; break;
}
return sonuc;
}


bool dfaCalistir(char girdi[], int diziBoyutu)
{
bool kabulDurumu[4] = { false, false, false, true };

int durum = 0;
for (int i = 0; i<diziBoyutu; i++)
{
durum = durumGetir(durum,girdi[i]);
}
return kabulDurumu[durum];
}

int main()
{
int girdiSayisi;
do{
cout << "Lutfen DFA'da uygulayacaginiz girdi SAYISINI yaziniz " << endl
<< "Orn: 1010101 icin 7 yaziniz:";
cin >> girdiSayisi;
char* girdiler = new char[girdiSayisi];
for (int i = 0; i<girdiSayisi; i++)
{
cout << "Lutfen " << i + 1 << ". girdinizi giriniz:";
cin >> girdiler[i];
}
cout << "Girdiginiz test degerlerinin kabul sonucu: " << ((dfaCalistir(girdiler, girdiSayisi)) ? "Kabul" : "Red!") << endl << "Yeni bir deneme icin e tusuna basin" << "Kapatmak icin e harici bir tusa basin.";
delete[] girdiler;
} while (_getch() == 'e');

return 0;
}

Hiç yorum yok:

Yorum Gönder