Analisador de spam. O spam (ou e-mail não solicitado) custa às organizações dos Estados Unidos bilhões de dólares por ano em software para prevenção de spam, equipamento, recursos de rede, largura de banda e produtividade perdida. Pesquise on-line algumas das mensagens

e palavras de spam que são comumente enviadas por e--mail, e verifique sua própria pasta de caixa de e-mail. Crie uma lista com trinta palavras e frases normalmente encontradas nas mensagens de spam. Escreva um programa em que o usuário forneça via teclado uma mensagem de e-mail. Leia a mensagem em um array de caracteres grande e garanta que o programa não tente inserir caracteres após o final do array. Depois, filtre a mensagem para cada uma das trinta palavras-chave ou frases. Para cada ocorrência de uma delas, some um ponto no ‘nível de spam’ da mensagem. Em seguida, avalie a probabilidade de que a mensagem seja um spam com base no número de pontos que ela recebeu.

Passo 1

Passo 1

1 de 10

Vamos escrever um programa que faça o seguinte:

Solicita que o usuário insira uma mensagem de e-mail.

Verifica a mensagem fornecida e determina a pontuação de spam com base na ocorrência de cada palavra-chave de spam na mensagem.

Exibe a probabilidade de a mensagem ser spam de acordo com a pontuação total de spam recebida.

Observe que podemos avaliar a probabilidade de a mensagem ser spam usando a fórmula

r a t e = s p a m S c o r e / s p a m K e y w o r d s * 100

Onde

spamScore refere-se ao total de pontos coletados para cada ocorrência de cada palavra-chave de spam na mensagem.

spamKeywords refere-se ao número total de palavras-chave de spam na lista.

Passo 2

Para escrever o programa, primeiro declararemos os seguintes arquivos de cabeçalho.

#include // Para as funções de entrada e saída

#include // Para as funções de string

Vamos então declarar a função main.

int main(){

}

Dentro desta função, vamos definir os requisitos do programa.

Agora, declare as seguintes variáveis.

char msg[5][150]; // Para armazenar a mensagem de e-mail

int, j; // Para os contadores de loop

// Para representar a lista de 30 palavras-chave de spam

char *spamKeywords[] = {

"renda adicional", "grátis", "dobre o seu", "você ganhou",

"oportunidade", "comprar", "ofertas", "renda extra", "ganhar dinheiro",

"clique aqui", "melhor preço", "dinheiro de volta", "cadastro", "reembolso total",

"ganhos potenciais", "grande", "experimente agora", "desconto", "dinheiro rápido",

"economize até", "clique no link", "acessível", "espere ganhar", "pedir agora",

"seja seu próprio patrão", "ofertas de cartão de crédito", "por que pagar mais",

"negócio incrível", "parabéns", "condições fáceis"

};

char *spamPtr; // Para apontar para uma palavra-chave de spam na mensagem

float spamScore; // Para armazenar a pontuação total de spam

float rate; // Para armazenar a taxa de spam

Passo 3

Em seguida, solicitaremos que o usuário insira a mensagem de e-mail e leia essa mensagem.

printf("Digite sua mensagem de e-mail:\n");

for(i = 0; i

fgets(msg[i], 150, stdin);

}

Em seguida, determinaremos a pontuação de spam fazendo o seguinte.

// Iterar dentro das palavras-chave de spam

for(i = 0; i

// Verifica a mensagem para determinar a pontuação de spam

for(j = 0; j

// Convertendo a mensagem primeiro em letras minúsculas e

// encontrando cada ocorrência de cada palavra-chave de spam na mensagem

strlwr(&msg[j]);

spamPtr = strstr(msg[j], spamKeywords[i]);

// Se a primeira ocorrência da palavra-chave de spam atual

// for encontrado, adicionamos um ponto à pontuação de spam e movemos

// para a próxima palavra-chave de spam.

if(spamPtr != NULL){

spamScore++;

break;

}

}

}

Em seguida, determinaremos a taxa para a probabilidade de a mensagem ser spam.

taxa = (spamScore / 30) * 100;

Por fim, exibiremos a pontuação de spam e a taxa. Em seguida, indicaremos que o programa terminou com sucesso, colocando o valor de retorno da função principal.

printf("\nSpam Score: %.f\n", spamScore);

printf("A probabilidade do e-mail ser spam é%.2f%% \n", rate);

return 0;

Resposta

Ver desenvolvimento