Exercícios de programação
Ensaio: Exercícios de programação. Pesquise 861.000+ trabalhos acadêmicosPor: chikus • 22/9/2014 • Ensaio • 1.966 Palavras (8 Páginas) • 190 Visualizações
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//Alunos Francisco de Assis Pereira de Araujo Santos e Gleydson Miranda Souza
void inserirTuplas(char alfab[50], char estados[50], char funcao[50][50], char estInicial[3], char estsFinais[50], char alfAux[50], char simbIn[2],int *quant){
int i = 0;
int flag = 2;
printf("\nInsira os simbolos do Alfabeto\nATENCAO:O caracter 'Q' NAO pode ser do alfabeto pois representa os Brancos do final da palavra\n FORMATO: a,b,c\n\n");
scanf("%s", alfab);
fflush(stdin);
printf("\nInforme o conjunto de estados possiveis \n FORMATO: q0,q1,q2\n");
scanf("%s", estados);
fflush(stdin);
printf("Informe a quantidade de transicoes: \n");
scanf("%d",&(*quant));
for(i=0; i<*quant; i++){
printf("Informe a transicao %d\n FORMATO: q0,a,A,D,q1 (Isso equivale a (q0,a)=(q1,A,D))\n", i+1);
scanf("%s", funcao[i]);
fflush(stdin);
}
printf("Informe o estado inicial: \n");
scanf("%s", estInicial);
fflush(stdin);
printf("Informe o conjunto de estados finais: \n");
printf("FORMATO: q0,q1,q2\n");
scanf("%s", estsFinais);
fflush(stdin);
printf("Essa MT possui alfabeto auxiliar? 1-SIM/2-NAO\n");
scanf("%d",&flag);
if(flag==1){
printf("Informe o alfabeto auxiliar: \nFORMATO: a,b,c\n");
scanf("%s",alfAux);
fflush(stdin);
}
else alfAux[0] = '\0';
printf("Informe o marcador de inicio (Esse marcador deve ser apenas 1 caracter DIFERENTE dos caracteres dos alfabetos)\n");
scanf("%s",simbIn);
fflush(stdin);
}
int EstadoAtualFazParteConjFim(char estadoAtual[3], char estsFinais[50]){
char aux[3];
int i=0;
int j=0;
for(i=0; i<strlen(estsFinais); i++){
if(estsFinais[i]==','){
j=0;
continue;
}
aux[j] = estsFinais[i];
j++;
if(j==2){
aux[2] = '\0';
if(strcmp(estadoAtual,aux)==0)
return 1;
}
}
return 0;
}
void reconhecerPalavra(char alfab[50], char estados[50], char funcao[50][50], char estInicial[3], char estsFinais[50], char alfAux[50], char simbIn[2], char simbFim[2], int *quant, char palavra[100]){
int flag = 0;
int flag2 = 0;
int i=0;
char palavraAux[100];
palavraAux[0] = simbIn[0];
char estadoAtual[3];
char estadoAux[3];
char aux2[3];
int j=0;
int flag3=0;
for(i=0; i<49;i++)
palavraAux[i] = 'Q';
palavraAux[49] = '\0';
palavraAux[0] = simbIn[0];
for(i=1; i<=strlen(palavra); i++){
palavraAux[i] = palavra[j];
j++;
}
j=1;
strcpy(estadoAtual, estInicial);
while(EstadoAtualFazParteConjFim(estadoAtual, estsFinais)==0){
flag3 = 0;
for(i=0; i<*quant; i++){
estadoAux[0] = funcao[i][0];
estadoAux[1] = funcao[i][1];
estadoAux[2] = '\0';
if(strcmp(estadoAtual, estadoAux)==0){
if(palavraAux[j]==funcao[i][3]){
...