/Peça ao usuário que digite uma senha e informe se a senha é FRACA, MEDIA ou FORTE
//minusculas, maiúsculas e numeros - GRUPOS
//SENHA FRACA: Senha com ocorrencia de caracteres em apenas 1 grupo
//SENHA MEDIA: Correncia em dois grupos.
//Senha FORTE: Ocorrencia em tres grupos.
// considerar senhas com 4 digitos
//casa - FRACA
//CaSa - MEDIO
//C4sA - FORTE
//1234 - FRACA
//afre - FRACA
//4eR8 - FORTE
//4a5t - MEDIO
Soluções para a tarefa
Resposta:
/* avaliador de senhas */
/* Linguagem C */
#include <stdio.h>
#define FRACA 0
#define MEDIA 1
#define FORTE 2
char senha[4];
char avaliador(char x[]);
int main()
{
printf("Digite a sua senha: ");
scanf("%4s", senha);
if (avaliador(senha) == FRACA)
printf("A sua senha é FRACA\n");
else if (avaliador(senha) == MEDIA)
printf("A sua senha é MEDIA\n");
else
printf("A sua senha é FORTE\n");
}
char avaliador(char x[])
{
int avaliacao;
int i, maiusculas, minusculas, numeros;
for(i = 0, maiusculas = 0, minusculas = 0, numeros = 0; i < 4; i ++)
if(x[i] >= 48 && x[i] <= 57)
numeros++;
else if (x[i] >= 65 && x[i] <= 90)
maiusculas++;
else if (x[i] >= 97 && x[i] <= 122)
minusculas++;
if (numeros == 4 || maiusculas == 4 || minusculas == 4)
avaliacao = FRACA;
else if (!(numeros * maiusculas * minusculas))
avaliacao = MEDIA;
else
avaliacao = FORTE;
return avaliacao;
Explicação:
Primeiras linhas, define as constantes FRACA com valor 0, MEDIA com valor 1 e FORTE com valor 2; em seguida é criada a matriz senha com 4 elementos e é feito o protótipo de função avaliador, que tem uma matriz do tipo char como parâmetro.
Na função main, é pedido para o usuário digitar uma senha, idependente da quantidade de letras, só serão aceitas as 4 primeiras (por causa do %4s).
Em seguida ele executa a cláusula if ao mesmo tempo que executa a função avaliador com os elementos da matriz senha como argumentos.
Dentro da função, a senha é avaliada pelo número de carácteres de grupos diferentes, na primeira cláusula if verifica se há 4 carácteres de um mesmo grupo, se sim a variável avaliacao é armazenada com o valor FRACA (que é zero), se não, verificar se a multiplicação do número de dígitos de todos os grupos é zero (se há algum grupo com 0 elementos, quer dizer que há apenas 2 grupos de elementos, p.ex. aa11, não há letras maiúsculas), se não é o que restou, ou seja, FORTE.
O valor da f. avaliador é repassado para o if, que avalia o valor e retorna para o usuário através da função printf().