online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
/* * Este programa tem como função validar uma senha com base em regras * específicas de segurança. O fluxo de execução é o seguinte: * * 1. ENTRADA DE DADOS: * - O usuário é solicitado a inserir uma "Senha" (atual) e uma "Nova Senha". * - Ambas as lidas são limitadas a 12 caracteres para evitar estouros de buffer (buffer overflow). * * 2. VALIDAÇÃO INICIAL: * - O programa verifica se a "Nova Senha" é estritamente igual à "Senha" digitada anteriormente. * *Nota: Lógica original preservada (strcmp == 0).* * - Verifica se o tamanho da senha é de pelo menos 6 caracteres. * * 3. ANÁLISE DE COMPLEXIDADE: * - Caso a validação inicial passe, o programa percorre cada caractere da senha * para contar quantos números, letras maiúsculas e letras minúsculas existem. * * 4. CRITÉRIO DE SUCESSO: * - Para ser considerada "ok", a senha deve possuir: * a) Pelo menos uma letra minúscula. * b) Pelo menos uma letra maiúscula. * c) Pelo menos um dígito numérico. * * 5. SAÍDA: * - Se tudo estiver correto, imprime "Nova senha ok". * - Se qualquer regra falhar (igualdade, tamanho ou tipos de caracteres), * imprime "Nova senha invalida". */ #include <stdio.h> #include <string.h> #include <ctype.h> int main() { // Variáveis para armazenar as senhas // Tamanho definido como 13 para acomodar até 12 caracteres + o terminador nulo (\0) char newPassword[13], password[13]; // Contadores para os tipos de caracteres encontrados na senha int numbers = 0, uppercase = 0, lowercase = 0; // Solicita e lê a senha atual (limitada a 12 caracteres) printf("\nDigite a Senha: "); scanf("%12s", password); // Solicita e lê a nova senha (limitada a 12 caracteres) printf("Digite a Nova Senha: "); scanf("%12s", newPassword); // Verifica se a nova senha é idêntica à anterior E se o tamanho é maior ou igual a 6 // Nota: A lógica original (strcmp == 0) exige que sejam iguais. if(strcmp(newPassword, password) == 0 && strlen(password) >= 6){ // Loop que percorre a string caractere por caractere for(int i = 0; i < strlen(password); i++){ // Verifica se o caractere atual é um dígito (0-9) if(isdigit(password[i]) != 0) numbers++; // Incrementa o contador de números // Se não for número, verifica se é letra maiúscula (A-Z) else if(isupper(password[i]) != 0) uppercase++; // Incrementa o contador de maiúsculas // Se não for maiúscula, verifica se é letra minúscula (a-z) else if(islower(password[i]) != 0) lowercase++; // Incrementa o contador de minúsculas } // Validação final: A senha só será aceita se tiver pelo menos // um de cada tipo (maiúscula, minúscula e número) if(lowercase > 0 && uppercase > 0 && numbers > 0) printf("Nova senha ok"); else printf("Nova senha invalida"); } else{ // Caso as senhas não sejam iguais ou o tamanho seja insuficiente printf("Nova senha invalida"); } return 0; }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue