Download as pdf or txt
Download as pdf or txt
You are on page 1of 23

SRI AUROBINDO INSTITUTE

OF TECHNOLOGY

THEORY OF COMPUTATION LAB [CS-501]

Submitted to: Submitted by:


Kavita Mulchandani SHUBHAM KUMAWAT
Asst. Professor 0873CS191005
CSE

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING


Session-2021
SHUBHAM KUMAWAT 0873CS191063
2

SRI AUROBINDO INSTITUTE OF


TECHNOLOGY
DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

Session-2021-22
Theory Of Computation CS501

INDEX
S.NO. List of Experiments Date of Date of Page Sign
Experiment Submission No.
1. CPP Program for DFA that accept strings which starts 3-4
and end with 'a' over input (a, b)
2. 2 CPP program to implement DFA that accepts all 5-9
strings which follow the language L = { a^n b^m
;n+m=even }

3. CPP program to implement DFA that accepts all string 10-13


that do not end with ‘THE’;

4. .CPP program to implement DFA that accepts all 14-18


string which follow the language L = { a^n b^m ; n
<=1, (m)mod 3=1}

5. CPP program to implement DFA that accepts all string 19-22


which follow the language L = { a^n b^m ;
(n)mod 2=0, m<=1 }

Abhishek Meena 0873CS191005 5th Sem 3rd Year


3

EXPERIMENT NO-1

Question 1 : CPP Program for DFA that accept strings which starts and end with
&#39;a&#39; over input (a, b)

CODE:-
#include <iostream>
#include<string.h>
using namespace std;

int language(string str){


if(str[0] == 'a'){ int len =
str.length(); if(str[len-
1]=='a'){ cout<<"String
accepted";
}else{

Abhishek Meena 0873CS191005 5th Sem 3rd Year


4

cout<<"String denied";
}
}
else{
cout<<"String denied";
}
}
int main() {
string lang;
cout<<"Enter your language : ";
cin>>lang; language(lang);
}
OUTPUT ---

EXPERIMENT NO-2

Question 2 : CPP program to implement DFA that accepts all strings which
follow the language L = { a^n b^m ;n+m=even }

Abhishek Meena 0873CS191005 5th Sem 3rd Year


5

CODE:-
#include <bits/stdc++.h>
using namespace std;

int dfa = 0;

void start(char c)
{
if (c == 'a')
dfa = 1; else if
(c == 'b') dfa
= 2;

else
dfa = -1;
}

void state1(char c)
{
if (c == 'a')
dfa = 0;
else if (c == 'b')
dfa = 5; else
dfa = -1; }

Abhishek Meena 0873CS191005 5th Sem 3rd Year


6

void state2(char c)
{ if (c ==
'b') dfa
= 3; else
dfa = -1; }

void state3(char c)
{ if (c ==
'b') dfa
= 4; else
dfa = -1; }

void state4(char c) { if (c == 'b') dfa = 3; else dfa = -1;


}

void state5(char c)
{ if (c ==
'b') dfa
= 6; else
dfa = -1;
}

void state6(char c)

Abhishek Meena 0873CS191005 5th Sem 3rd Year


7

{ if (c ==
'b') dfa
= 5; else
dfa = -1;
}

int isAccepted(char str[]) { int i, len = strlen(str);

for (i = 0; i < len; i++)


{
if (dfa == 0)
start(str[i]);

else if (dfa == 1)
state1(str[i]);

else if (dfa == 2)
state2(str[i]);

else if (dfa == 3)
state3(str[i]);

else if (dfa == 4)
state4(str[i]);

Abhishek Meena 0873CS191005 5th Sem 3rd Year


8

else if (dfa == 5)
state5(str[i]);

else if (dfa == 6)
state6(str[i]);
else
return 0;
}
if (dfa == 3 || dfa == 5)
return 1; else
return 0;
}

int main()
{ char str[20] ; cout <<
"Enter a string: "; cin >>
str; if (isAccepted(str))

cout<<endl; cout <<


"ACCEPTED"; cout<<endl;
else cout<<endl; cout
<< "NOT ACCEPTED";
cout<<endl; return 0;

Abhishek Meena 0873CS191005 5th Sem 3rd Year


9

OUTPUT:-

EXPERIMENT NO-3

3. CPP program to implement DFA that accepts all string that do not end with
‘THE’;
CODE:-
#include <iostream> using
namespace std;

int dfa = 0;

void start(char c)
{

Abhishek Meena 0873CS191005 5th Sem 3rd Year


10

if (c == 't' || c == 'T')
dfa = 1;
}

void state1(char c)
{

if (c == 't' || c == 'T')
dfa = 1;

else if (c == 'h' || c ==
'H') dfa = 2;

else
dfa = 0;
}

void state2(char c)
{

if (c == 'e' || c == 'E')
dfa = 3; else if (c == 't' ||

Abhishek Meena 0873CS191005 5th Sem 3rd Year


11

c == 'T') dfa = 1; else


dfa = 0;
}

void state3(char c)
{

if (c == 't' || c == 'T')
dfa = 1; else
dfa = 0;
}

bool isAccepted(string str)


{

int len = str.length();

for (int i = 0; i < len; i++)


{
if (dfa == 0)
start(str[i]);

else if (dfa == 1)
state1(str[i]);

Abhishek Meena 0873CS191005 5th Sem 3rd Year


12

else if (dfa == 2)
state2(str[i]);
else
state3(str[i]);
}
return (dfa != 3);
}

int main()
{ char str[20]; cout <<
"Enter a string: "; cin >>
str;
cout<<"String ends with 'the': "; if
(isAccepted(str) == true) cout <<
"No, String accepted"<<endl; else
cout << "Yes, String not accepted"<<endl;

return 0;
}

OUTPUT:-

Abhishek Meena 0873CS191005 5th Sem 3rd Year


13

EXPERIMENT NO-4

4. CPP program to implement DFA that accepts all string which follow the
language L = { a^n b^m ; n <=1, (m)mod 3=1}
CODE:-

Abhishek Meena 0873CS191005 5th Sem 3rd Year


14

#include <iostream>
#include <string.h> using
namespace std; int dfa =
0;

void start(char c)
{ if (c ==
'a')
{ dfa
= 1;
}
else if (c == 'b')
{ dfa
= 3;
}

else
{ dfa
= -1;
}
}

void state1(char c)

Abhishek Meena 0873CS191005 5th Sem 3rd Year


15

{ if (c ==
'a')
{ dfa
= 2; }

else if (c == 'b')
{ dfa
= 4;
}
else
{ dfa
= -1;
}
}

void state2(char c)
{ if (c ==
'b')
{ dfa
= 3;
}
else if (c == 'a')
{ dfa
= 1;
}

Abhishek Meena 0873CS191005 5th Sem 3rd Year


16

else
{ dfa
= -1; }

void state3(char c)
{ if (c ==
'b')
{ dfa
= 3;
}
else if (c == 'a')
{ dfa
= 4;
}
else
{ dfa
= -1;
}
}

void state4(char c)
{ dfa = -
1;

Abhishek Meena 0873CS191005 5th Sem 3rd Year


17

int isAccepted(char str[])


{ int i, len =
strlen(str);

for (i = 0; i < len; i++)


{
if (dfa == 0)
start(str[i]);

else if (dfa == 1)
state1(str[i]);

else if (dfa == 2)
state2(str[i]);

else if (dfa == 3)
state3(str[i]);

else if (dfa == 4)
state4(str[i]);
else return 0;
}

Abhishek Meena 0873CS191005 5th Sem 3rd Year


18

if (dfa == 3)
return 1;
else
return 0;
}

int main()
{ char str[20]; cout <<
"Enter a string: "; cin >>
str; if (isAccepted(str))
printf("ACCEPTED"); else
printf("NOT ACCEPTED");
return 0;
}

OUTPUT -

Abhishek Meena 0873CS191005 5th Sem 3rd Year


19

EXPERIMENT NO-5

5. CPP program to implement DFA that accepts all string which follow the
language L = { a^n b^m ; (n)mod 2=0, m<=1 }

CODE:-
#include <iostream>
#include <string.h> using
namespace std;

int dfa = 0;

void start(char c)
{
if (c == 'a')
{
dfa = 1;
}
else if (c == 'b')
{
dfa = 3;
}

else
{
dfa = -1;
}
}

void state1(char c)
{ if (c ==
'a')

Abhishek Meena 0873CS191005 5th Sem 3rd Year


20

{ dfa
= 2;
}
else if (c == 'b')
{ dfa
= 4;
}
else
{ dfa
= -1;
}
}

void state2(char c)
{ if (c ==
'b')
{ dfa
= 3;
}
else if (c == 'a')
{ dfa
= 1;
}
else
{ dfa
= -1;
}
}

void state3(char c)
{ if (c ==
'b')
{ dfa
= 3; }
else if (c == 'a')

Abhishek Meena 0873CS191005 5th Sem 3rd Year


21

{ dfa
= 4;
}
else
{ dfa
= -1;
}
}

void state4(char c)
{ dfa = -
1;
}

int isAccepted(char str[])


{
int i, len = strlen(str);

for (i = 0; i < len; i++)


{
if (dfa == 0)
start(str[i]);

else if (dfa == 1)
state1(str[i]);

else if (dfa == 2)
state2(str[i]);

else if (dfa == 3)
state3(str[i]);

else if (dfa == 4)
state4(str[i]); else

Abhishek Meena 0873CS191005 5th Sem 3rd Year


22

return 0;
}
if (dfa == 3)
return 1;
else
return 0;
}

int main()
{ char str[20]; cout <<
"Enter a string: ";
cin >> str; if
(isAccepted(str))
cout<<"ACCEPTED";
else
cout<<"NOT ACCEPTED";
return 0;
}

OUTPUT --

Abhishek Meena 0873CS191005 5th Sem 3rd Year


23

Abhishek Meena 0873CS191005 5th Sem 3rd Year

You might also like