Implementação de autômato
Olá, pessoal.
Segue abaixo o código para implementação do autômato que fizemos em sala de aula para reconhecimento dos números em algarismos romanos de 1 a 39. Para o trabalho proposto, basta alterar o código para que o programa imprima na tela o número em algarismos arábicos.
Exemplo: se o usuário digitar “xxvii”, o programa deve imprimir “27”.
#include <stdio.h> #include <string.h> int main(void) { /* I V X */ int S[11][3] = {{ 1, 5, 8}, \ { 2, 4, 7}, \ { 3, -1, -1}, \ {-1, -1, -1}, \ {-1, -1, -1}, \ { 6, -1, -1}, \ { 2, -1, -1}, \ {-1, -1, -1}, \ { 1, 5, 9}, \ { 1, 5, 10}, \ { 1, 5, -1}}; char texto[100], c; int estado, pos, entrada; printf("Digite o texto: "); fgets(texto, 100, stdin); texto[strlen(texto) - 1] = 0; estado = 0; pos = 0; while ((c = texto[pos]) != 0) { if (c == 'i') entrada = 0; else if (c == 'v') entrada = 1; else if (c == 'x') entrada = 2; else { printf("Caractere invalido: %c\n", c); return 1; } estado = S[estado][entrada]; if (estado == -1) { printf("Erro na coluna %d.\n", pos); return 2; } pos++; } if (estado != 0) printf("Texto OK!\n"); else printf("Texto invalido!\n"); return 0; }
Leave a Reply