bool cyfra = false;
bool wielka = false;
bool mala = false;
bool reszta = false;
for (char c : haslo[i]) {
if (isdigit(c)) cyfra = true;
else if (isupper(c)) wielka = true;
else if (islower(c)) mala = true;
else reszta = true;
}
if (cyfra && wielka && mala && reszta) {
std::cout << haslo[i] << '\n';
}
Nie wiem, po co czytasz hasła do tablicy, skoro można od razu sprawdzać przeczytane hasło.