Ir para conteúdo
Fórum Script Brasil
  • 0

Consistencia de cadastro do e-mail


karyn

Pergunta

1 resposta a esta questão

Posts Recomendados

  • 1

Uma boa forma é usando Autômato finito determinístico e usar a sintaxes que se pode observar aqui: "Syntaxe de um email".

Em Autômato finito determinístico serve, entre muitas coisas, para validar uma string e saber se ela idêntica a outra que temos. Por sorte tenho um exemplo.

Imaginamos umas quantas palavras ou frases(neste exemplo somente veremos algumas palavras):
"char"
"for"
"float"duvida.jpg.8cb0283df00dda51a94e6f634bb8e243.jpg

Esses seriam os caminhos a seguir para validar essas três palavras. Então nosso código seria esse mais ou menos:
 

#include <stdio.h>
#define TAM 100

void qInicio ( char palavra[TAM]);
void q0( int contador, char palavra[TAM]);
void q1( int contador, char palavra[TAM]);
void q2( int contador, char palavra[TAM]);
void q3( int contador, char palavra[TAM]);
void q4( int contador, char palavra[TAM]);
void q5( int contador, char palavra[TAM]);
void q6( int contador, char palavra[TAM]);
void q7( int contador, char palavra[TAM]);
void q8( int contador, char palavra[TAM]);
void q9( int contador, char palavra[TAM]);
void qFim();
void qErro();

int main(){
    char palavra[TAM] = "for"; //casos de comprovação: o programa só aceitará "char", "for" ou "float". Mas você pode por qualquer frase
    qInicio(palavra);
    
    return 0;
}

void qInicio ( char palavra[TAM] ){
    int contador = 0;
    q0( contador, palavra );
}

void q0( int contador, char palavra[TAM] ){
    if ( contador < TAM ){
        if ( palavra[contador] == 'f' ){
           q1( ++contador, palavra ); 

        }else if (palavra[contador] == 'c'){
           q8( ++contador, palavra ); 

        }else{
            qErro();
        }

    }
}

void q1( int contador, char palavra[TAM] ){
    if ( contador < TAM ){
        if ( palavra[contador] == 'l' ){
          q2( ++contador, palavra ); 

        }else if (palavra[contador] == 'o'){
           q3( ++contador, palavra ); 

        }else{
            qErro();
        }

    }
}

void q2( int contador, char palavra[TAM] ){
    if ( palavra[contador] == 'o' ) {
        q5 ( ++contador, palavra );
        
    } else {
        qErro();
    }
}

void q3( int contador, char palavra[TAM] ){
    if ( palavra[contador] == 'r' ) {
        q4 ( ++contador, palavra );
        
    } else {
        qErro();
    }
}

void q4( int contador, char palavra[TAM] ){
    qFim();
}

void q5( int contador, char palavra[TAM] ){
    if ( palavra[contador] == 'a' ) {
        q6 ( ++contador, palavra );
        
    } else {
        qErro();
    }
}

void q6( int contador, char palavra[TAM] ){
    if ( palavra[contador] == 't' ) {
        q7 ( ++contador, palavra );
        
    } else {
        qErro();
    }
}

void q7( int contador, char palavra[TAM] ){
    qFim();
}

void q8( int contador, char palavra[TAM] ){
    if ( contador < TAM ){
        if ( palavra[contador] == 'h' ){
          q9( ++contador, palavra ); 

        }else{
            qErro();
        }

    }
}

void q9( int contador, char palavra[TAM] ){
    if ( palavra[contador] == 'a' ) {
        q3 ( ++contador, palavra );
        
    } else {
        qErro();
    }
}


void qErro(){
    printf("Palavra regeitada pelo automata!\n");
}

void qFim(){
    printf("Palavra Aceita pelo automata!\n");
}

Pode inserir qualquer palavra na string que esta na primeira linha do for porem o programa só aceitará uma das 3 que citei no inicio. De uma estudada e se tiver duvidas pergunte. Tente resolver com isso pois é muito potente esse sistema.

Editado por vangodp
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...