Aqui foi resolvido o problema "Validador de Senhas", em C e C++. Em C++ foram feitas duas respostas!
Plataforma: URI (BEECROWD)
Problema: 2253
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; }
#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; }
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