karyn Postado Setembro 19, 2019 Denunciar Share Postado Setembro 19, 2019 Como faz pra colocar o "@" e o ".com" na consistência? Preciso fazer um cadastro e não consigo colocar na consistência de dados que se não for digitado o "@" e o ".com" precisa dar uma mensagem para redigitar. Citar Link para o comentário Compartilhar em outros sites More sharing options...
1 vangodp Postado Setembro 20, 2019 Denunciar Share Postado Setembro 20, 2019 (editado) 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" 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 Setembro 20, 2019 por vangodp Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
karyn
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
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.