Enviado em 30/07/2017 - 19:43h
Preciso implementar um programa em C que leia o código fonte da página "Email address" do Wikipédia colocado em um arquivo "Entrada.txt" no diretório do programa em C, (fopen..., "r"), e imprima como resultado os e-mails válidos que estão no código, a partir de um automato finito deterministico, ou seja, com os estados em forma de função. Esse é código fonte: view-source:https://en.wikipedia.org/wiki/Email_address#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NMAX 76959 //caracteres aceitos que são do tipo letra, num, ponto, traço, @
int SelecionaSimbolosValidos(char Simbolo);
void qInicial(char Simbolo[NMAX]);
void q0(int contador, char Simbolo[NMAX]);
void q1(int contador, char Simbolo[NMAX]);
void q2(int contador, char Simbolo[NMAX]);
void q3(int contador, char Simbolo[NMAX]);
void q4(int contador, char Simbolo[NMAX]);
void q5(int contador, char Simbolo[NMAX]);
void q6(int contador, char Simbolo[NMAX]);
void q7(int contador, char Simbolo[NMAX]);
void q8(int contador, char Simbolo[NMAX]);
void q9(int contador, char Simbolo[NMAX]);
void q10(int contador, char Simbolo[NMAX]);
void q11(int contador, char Simbolo[NMAX]);
void qErro(int Contador, char Simbolo[NMAX]);
int SelecionaSimbolosValidos(char Simbolo)
{
int aceita = 0, rejeita = 1;
if((Simbolo >= 'a' && Simbolo <= 'z') || (Simbolo >= 'A' && Simbolo <= 'Z')|| Simbolo == '@'
|| Simbolo == '-' ||Simbolo == '.' || ((Simbolo >= '0' && Simbolo <= '9')))
return aceita;
else
return rejeita;
}
void qInicial(char Simbolo[NMAX])
{
int contador = 0;
q0(contador, Simbolo);
}
void q0(int contador, char Simbolo[NMAX])
{
if(contador < NMAX){
if ((Simbolo[contador] >= 'a' && Simbolo[contador] <= 'z') ||
(Simbolo[contador] >= 'A' && Simbolo[contador] <= 'Z'))
{
printf("%c", Simbolo[contador]);
q1(++contador, Simbolo);
}
/*else
qErro(contador, Simbolo);*/
}
}
void q1(int contador, char Simbolo[NMAX])
{
if(contador < NMAX) {
if((Simbolo[contador] >= 'a' && Simbolo[contador] <= 'z') ||
(Simbolo[contador] >= 'A' && Simbolo[contador] <= 'Z')
|| (Simbolo[contador] >= '0' && Simbolo[contador] <= '9'))
{
printf("%c", Simbolo[contador]);
q2(++contador, Simbolo);
}
else if (Simbolo[contador] == '@')
{
printf("%c", Simbolo[contador]);
q3(++contador, Simbolo);
}
else if (Simbolo[contador] == '-')
{
printf("%c", Simbolo[contador]);
q4(++contador, Simbolo);
}
/*else
qErro(++contador, Simbolo);*/
}
}
void q2(int contador, char Simbolo[NMAX])
{
if(contador < NMAX){
if((Simbolo[contador] >= 'a' && Simbolo[contador] <= 'z') ||
(Simbolo[contador] >= 'A' && Simbolo[contador] <= 'Z')
|| (Simbolo[contador] >= '0' && Simbolo[contador] <= '9'))
{
printf("%c", Simbolo[contador]);
q2(++contador, Simbolo);
}
else if (Simbolo[contador] == '@')
{
printf("%c", Simbolo[contador]);
q3(++contador, Simbolo);
}
else {
q0(contador, Simbolo);
}
/*
else
qErro(contador, Simbolo); */
}
}
void q3(int contador, char Simbolo[NMAX])
{
if(contador < NMAX) {
if((Simbolo[contador] >= 'a' && Simbolo[contador] <= 'z') ||
(Simbolo[contador] >= 'A' && Simbolo[contador] <= 'Z')
|| (Simbolo[contador] >= '0' && Simbolo[contador] <= '9'))
{
printf("%c", Simbolo[contador]);
q10(++contador, Simbolo);
}
else if ((Simbolo[contador] >= 'a' && Simbolo[contador] <= 'z') ||
(Simbolo[contador] >= 'A' && Simbolo[contador] <= 'Z'))
{
printf("%c", Simbolo[contador]);
q11(++contador, Simbolo);
}/*
else
qErro(contador, Simbolo);*/
}
}
void q4(int contador, char Simbolo[NMAX])
{
if(contador < NMAX) {
if((Simbolo[contador] >= 'a' && Simbolo[contador] <= 'z') ||
(Simbolo[contador] >= 'A' && Simbolo[contador] <= 'Z')
|| (Simbolo[contador] >= '0' && Simbolo[contador] <= '9'))
{
printf("%c", Simbolo[contador]);
q5(++contador, Simbolo);
}/*
else
qErro(contador, Simbolo);*/
}
}
void q5(int contador, char Simbolo[NMAX])
{
if(contador < NMAX){
if((Simbolo[contador] >= 'a' && Simbolo[contador] <= 'z') ||
(Simbolo[contador] >= 'A' && Simbolo[contador] <= 'Z')
|| (Simbolo[contador] >= '0' && Simbolo[contador] <= '9'))
{
printf("%c", Simbolo[contador]);
q5(++contador, Simbolo);
}
else if (Simbolo[contador] == '@')
{
printf("%c", Simbolo[contador]);
q3(++contador, Simbolo);
}
else if(Simbolo[contador] == '-')
{
printf("%c", Simbolo[contador]);
q4(++contador, Simbolo);
}/*
else
qErro(contador, Simbolo);*/
}
}
void q6(int contador, char Simbolo[NMAX])
{ if(contador < NMAX){
if((Simbolo[contador] >= 'a' && Simbolo[contador] <= 'z') ||
(Simbolo[contador] >= 'A' && Simbolo[contador] <= 'Z')
|| (Simbolo[contador] >= '0' && Simbolo[contador] <= '9'))
{
printf("%c", Simbolo[contador]);
q7(++contador, Simbolo);
}/*
else
qErro(contador, Simbolo);*/
}
}
void q7(int contador, char Simbolo[NMAX])
{
if(contador < NMAX){
if((Simbolo[contador] >= 'a' && Simbolo[contador] <= 'z') ||
(Simbolo[contador] >= 'A' && Simbolo[contador] <= 'Z')
|| (Simbolo[contador] >= '0' && Simbolo[contador] <= '9'))
{
printf("%c", Simbolo[contador]);
q7(++contador, Simbolo);
}
else if (Simbolo[contador] == '-')
{
printf("%c", Simbolo[contador]);
q8(++contador, Simbolo);
}
else if (Simbolo[contador] == '@')
{
printf("%c", Simbolo[contador]);
q3(++contador, Simbolo);
}/*
else
qErro(contador, Simbolo);*/
}
}
void q8(int contador, char Simbolo[NMAX])
{ if(contador < NMAX){
if((Simbolo[contador] >= 'a' && Simbolo[contador] <= 'z') ||
(Simbolo[contador] >= 'A' && Simbolo[contador] <= 'Z')
|| (Simbolo[contador] >= '0' && Simbolo[contador] <= '9'))
{
printf("%c", Simbolo[contador]);
q9(++contador, Simbolo);
}/*
else
qErro(contador, Simbolo);*/
}
}
void q9(int contador, char Simbolo[NMAX])
{
if(contador < NMAX){
if((Simbolo[contador] >= 'a' && Simbolo[contador] <= 'z') ||
(Simbolo[contador] >= 'A' && Simbolo[contador] <= 'Z')
|| (Simbolo[contador] >= '0' && Simbolo[contador] <= '9'))
{
printf("%c", Simbolo[contador]);
q9(++contador, Simbolo);
}
else if (Simbolo[contador] == '@')
{
printf("%c", Simbolo[contador]);
q3(++contador, Simbolo);
}
else if (Simbolo[contador] == '-')
{
printf("%c", Simbolo[contador]);
q8(++contador, Simbolo);
}/*
else
qErro(contador, Simbolo);*/
}
}
void q10(int contador, char Simbolo[NMAX])
{
if(contador < NMAX){
if((Simbolo[contador] >= 'a' && Simbolo[contador] <= 'z') ||
(Simbolo[contador] >= 'A' && Simbolo[contador] <= 'Z')
|| (Simbolo[contador] >= '0' && Simbolo[contador] <= '9')||
Simbolo[contador] == '-')
{
printf("%c", Simbolo[contador]);
q10(++contador, Simbolo);
}
else if (Simbolo[contador] == '.')
{
printf("%c", Simbolo[contador]);
q11(++contador, Simbolo);
}/*
else
qErro(contador, Simbolo);*/
}
}
void q11(int contador, char Simbolo[NMAX])
{ if(contador < NMAX){
if((Simbolo[contador] >= 'a' && Simbolo[contador] <= 'z') ||
(Simbolo[contador] >= 'A' && Simbolo[contador] <= 'Z')
|| (Simbolo[contador] >= '0' && Simbolo[contador] <= '9'))
{
printf("%c", Simbolo[contador]);
q11(++contador, Simbolo);
}
}}
else
qErro(contador, Simbolo);
}
}
void qErro(int contador, char Simbolo[NMAX])
{
if(contador < NMAX)
q0(++contador, Simbolo);
else
exit(1);
}
int main()
{
int i = 0;
int teste_validacao;
int tamanho = 0;
char caracteres[NMAX];
char caracter;
FILE *arquivo;
arquivo = fopen("Entrada.txt", "r");
if (arquivo == NULL)
return EXIT_FAILURE;
while(!feof(arquivo))
{
caracter = getc(arquivo);
teste_validacao = SelecionaSimbolosValidos(caracter);
if(teste_validacao == 0)
{
caracteres[i] = caracter;
i++;
tamanho++;
}
}
qInicial(caracteres);
/*int j;
for(j = 0; j < tamanho; j++)
printf("%c", caracteres[j]);
printf("\nnumCaracteresValidos: %d\n", tamanho);
*/
fclose(arquivo);
return 0;
}
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
VMs e Interfaces de Rede desapareceram (2)
Desde que seja DDR3, posso colocar qualquer memória? (5)
Tem como deixar um processo rodando mesmo após o desligamento da maqui... (5)