Pesquisar este blog

Livros Recomendados

sexta-feira, 5 de março de 2021

URI (BEECROWD) - 2253 - Validador de Senhas - Strings - C e C++

Aqui foi resolvido o problema "Validador de Senhas", em C e C++. Em C++ foram feitas duas respostas!

Plataforma: URI (BEECROWD)


Problema2253

Enunciado:
Rolien e Naej são os desenvolvedores de um grande portal de programação. Para ajudar no novo sistema de cadastro do site, eles requisitaram a sua ajuda. Seu trabalho é fazer um código que valide as senhas que são cadastradas no portal, para isso você deve atentar aos requisitos a seguir: A senha deve conter, no mínimo, uma letra maiúscula, uma letra minúscula e um número; A mesma não pode ter nenhum caractere de pontuação, acentuação ou espaço; Além disso, a senha pode ter de 6 a 32 caracteres.

Linguagens: C e C++


Solução:

Código em C:

#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
    char palavra[100];
    int i, c, r;
    while (scanf("%[^\n]%*c", palavra) != EOF) {
        r = 1;
        c = 0;
        if (strlen(palavra) < 6 || strlen(palavra) > 32)
        	r = 0;
        else {
        	for (i = 0; i < strlen(palavra); i++) {
        		if (!isalpha(palavra[i]) && !isdigit(palavra[i])) {
        			r = 0;
        			break;
        		}
        	}
        	if (r) {
	        	for (i = 0; i < strlen(palavra); i++) {
	        		if (islower(palavra[i]) && isalpha(palavra[i])) {
	        			c++;
	        			break;
	        		}
	        	}
	        	for (i = 0; i < strlen(palavra); i++) {
	        		if (isupper(palavra[i]) && isalpha(palavra[i])) {
	        			c++;
	        			break;
	        		}
	        	}
	        	for (i = 0; i < strlen(palavra); i++) {
	        		if (isdigit(palavra[i])) {
	        			c++;
	        			break;
	        		}
	        	}
	        }
        }
        printf("Senha %svalida.\n", (!r || c!=3? "in" : ""));
    }
    return 0;
}

Código em C++:

#include <iostream>
using namespace std;
int main() {
    string palavra;
    bool r;
    int i, c;
    while (getline(cin, palavra)) {
        r = true;
        c = 0;
        if (palavra.size() < 6 || palavra.size() > 32)
        	r = !r;
        else {
        	for (i = 0; i < palavra.size(); i++) {
        		if (!isalpha(palavra[i]) && !isdigit(palavra[i])) {
        			r = !r;
        			break;
        		}
        	}
        	if (r) {
	        	for (i = 0; i < palavra.size(); i++) {
	        		if (islower(palavra[i]) && isalpha(palavra[i])) {
	        			c++;
	        			break;
	        		}
	        	}
	        	for (i = 0; i < palavra.size(); i++) {
	        		if (isupper(palavra[i]) && isalpha(palavra[i])) {
	        			c++;
	        			break;
	        		}
	        	}
	        	for (i = 0; i < palavra.size(); i++) {
	        		if (isdigit(palavra[i])) {
	        			c++;
	        			break;
	        		}
	        	}
	        }
        }
        cout << "Senha " << (!r || c!=3? "in" : "") << "valida." << endl;
    }
    return 0;
}


Código em C++:

Nesta solução, para cada senha lida, ela é percorrida testando os critérios de conter letras maiúsculas, minúsculas e número, além disso, é verificado se não contém mais nenhum símbolo diferente destes.
Posteriormente, é verificado se a senha está entre 6 e 32 caracteres. Caso todas as condições sejam verdadeiras, então é uma senha válida.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
 
using namespace std;

bool upper(char aux){
 if(aux>='A' and aux <='Z') return true;
 else return false;
}
bool lower(char aux){
 if(aux>='a' and aux <='z') return true;
 else return false;
}
bool number(char aux){
 //cout << "Teste char " << aux << endl;
 if(aux>='0' and aux <='9') return true;
 else return false;
}

int main() {
 string password;
 bool len;
 while(getline(cin, password)){
  bool valid = true;
  bool containUpper = false;
  bool containLower = false;
  bool containNumber = false;
  for (int i=0; i<password.length();i++){
   if(upper(password[i])) containUpper = true;
   else if(lower(password[i])) containLower = true;
   else if(number(password[i])) containNumber = true;
   else valid = false; 
  }

  if(password.length()>=6 and password.length() <=32) len = true;
  else len = false;

  if(valid and containUpper and containLower and containNumber and len)
   cout << "Senha valida."<< endl;
  else cout << "Senha invalida."<< endl;
 }  
    return 0;
}

Nenhum comentário:

Postar um comentário

Postagem em destaque

URI (BEECROWD) - 2158 - Helping Uncle Cláudio (Ajudando o Tio Cláudio) - Matemática - C, C++ e Haskell

Buenas! Estou aqui mais uma vez para resolver um problema de Matemática! Agora tenho resolvido alguns dessa categoria, pra que vocês possam ...

Postagens mais visitadas