Hacer un programa que simule el comportamiento del siguiente

Anuncio
Hacer un programa que simule el comportamiento del siguiente AFD:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<iostream.h>
main()
{
int i,j=0,estado=1,ruta[10],mensaje;
ruta[0]=estado; // asigna el estado '1' al arreglo ruta en la primera posición
char palabra[10]; // declara un arreglo de caracteres para recibir la cadena del usuario
cout<<"AUTOMATA FINITO DETERMINISTA "<<endl;
cout<<"Introduzca el numero a evaluar: ";
for(i=0;(palabra[i]=getchar())!='\n';i++); //bucle que pide la cadena y la va almacenando
cout<<endl<<"Evaluacion de la cadena: ";
do{
// PROGRAMAR PARA CADA ESTADO
// ESTADO 1
if((estado==1 && palabra[j]=='b') || (estado==2 && palabra[j]=='a'))
{
estado=1;
j++;
ruta[j]=estado;
mensaje=0;
i--;
}
// ESTADO 2
if((estado==1 && palabra[j]=='a') || (estado==2 && palabra[j]=='b'))
{
estado=2;
j++;
ruta[j]=estado;
mensaje=1;
i--;
}
}while(i!=0); // mientras i que es la longitud de la cadena original no llegue a 0
// EVALUACION DE LA ACEPTACION O RECHAZO DE LA CADENA
if(mensaje==1){
cout<<"CADENA ACEPTADA"<<endl<<endl;
cout<<"RUTA:"<<endl;
for(i=0;i<=j; i++)
cout<<"estado "<<ruta[i]<<"\t";
}
else{
cout<<"CADENA RECHAZADA"<<endl<<endl;
cout<<"RUTA:"<<endl;
for(i=0;i<=j; i++)
cout<<"estado "<<ruta[i]<<"\t";
}
getch();
}
Crear un autómata que acepte solamente números decimales y luego codifíquelo en C++.
digito
1
digito
digito

2
3
digito
4
Codificación en C++
#include <stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<iostream.h>
main()
{
int i,j=0,estado=1,ruta[10],mensaje;
ruta[0]=estado; // asigna el estado ‘1’ al arreglo ruta en la primera posición
char palabra[10]; // declara un arreglo de caracteres para recibir la cadena del usuario
cout<<"AUTOMATA FINITO DETERMINISTA QUE EVALUA SOLO NUMEROS DECIMALES"<<endl;
cout<<"Introduzca el numero a evaluar: ";
for(i=0;(palabra[i]=getchar())!='\n';i++); //bucle que pide el numero y lo va almacenando
cout<<endl<<"Evaluacion del numero: ";
do{
// PROGRAMAR PARA CADA ESTADO
// ESTADO 2
if((estado==1||estado==2) && (palabra[j]>='0' && palabra[j]<='9'))
{
estado=2;
j++;
ruta[j]=estado;
mensaje=0;
i--;
}
// ESTADO 3
if(estado==2 && palabra[j]=='.')
{
estado=3;
j++;
ruta[j]=estado;
mensaje=0;
i--;
}
// ESTADO 4 (ACEPTACION)
if((estado==3||estado==4) && (palabra[j]>='0' && palabra[j]<='9'))
{
estado=4;
j++;
ruta[j]=estado;
mensaje=1;
i--;
}
}while(i!=0);
if(mensaje==1){
cout<<"CADENA ACEPTADA"<<endl<<endl;
cout<<"RUTA:"<<endl;
for(i=0;i<=j; i++)
cout<<"estado "<<ruta[i]<<"\t";
}
else{
cout<<"CADENA RECHAZADA"<<endl<<endl;
cout<<"RUTA:"<<endl;
for(i=0;i<=j; i++)
cout<<"estado "<<ruta[i]<<"\t";
}
getch();
}
Descargar