É mais fácil pensar nesse problema como um for que passa em cada letra e no final do for você precisa ter algumas variáveis com valor verdadeiro e outras com valor falso. Se tivermos uma variável indicando se vimos alguma caractere que não é letra nem número, no final queremos que essa variável seja falsa. Se tivermos uma variável cada para indicar se vimos uma maiúscula, uma minúscula ou um número, queremos que todas essas variáveis no final sejam verdadeiras. Com isso, com esse raciocínio, se torna um pouquinho mais fácil fazer esse programa, apenas lembrando que se ele não tiver o tamanho recomendado, você não precisa perder seu tempo fazendo o for, pode ir direto para a próxima senha.
#include<string.h>#include<stdio.h>#include<ctype.h>intmain(){char S[101];int n, errado, maiuscula, minuscula, numero;while(gets(S)!=NULL){ n =strlen(S);if(n <6|| n >32){printf("Senha invalida.\n");continue; } errado =0, maiuscula =0, minuscula =0, numero =0;for(int i =0; i < n; ++i){if(isalpha(S[i])){if(S[i] ==tolower(S[i])) minuscula =1;else maiuscula =1; }elseif(isdigit(S[i])) numero =1;else{ errado =1;break; } }if(errado ||!(maiuscula && minuscula && numero)){printf("Senha invalida.\n"); }else{printf("Senha valida.\n"); } }return0;}
var input =require('fs').readFileSync('/dev/stdin','utf8');var lines =input.split('\n');while(lines.length){letS=lines.shift();if(S.length<6||S.length>32){console.log("Senha invalida.");continue; }let errado =false, maiuscula =false, minuscula =false, numero =false;for(let i =0; i <S.length; ++i){if(/[A-Z]/.test(S[i])){ maiuscula =true; }elseif(/[a-z]/.test(S[i])){ minuscula =true; }elseif(/[0-9]/.test(S[i])){ numero =true; }else{ errado =true;break; } }if(errado ||!(maiuscula && minuscula && numero)){console.log("Senha invalida."); }else{console.log("Senha valida."); }}
whileTrue:try: S =input()if(len(S)<6orlen(S)>32):print("Senha invalida.")continue errado, maiuscula, minuscula, numero =False,False,False,Falsefor letra in S:if(letra.isalpha()):if(letra.isupper()): maiuscula =Trueelse: minuscula =Trueelif(letra.isdigit()): numero =Trueelse: errado =Truebreakif(errado ornot (maiuscula and minuscula and numero)):print("Senha invalida.")else:print("Senha valida.")exceptEOFError:break