#include <iostream>
#include <string>
#include <cctype> // Untuk fungsi isdigit, isupper, islower, isalpha, ispunct
using namespace std;
int main() {
string kataSandi;
cout << "Masukkan kata sandi: ";
getline(cin, kataSandi); // Membaca seluruh baris termasuk spasi (jika ada)
// Inisialisasi penghitung
int jumlahAngka = 0;
int jumlahHurufKapital = 0;
int jumlahHurufKecil = 0;
int jumlahSimbol = 0;
// Periksa setiap karakter dalam kata sandi
for (char c : kataSandi) {
if (isdigit(c)) {
jumlahAngka++;
} else if (isupper(c)) {
jumlahHurufKapital++;
} else if (islower(c)) {
jumlahHurufKecil++;
} else if (ispunct(c) || (!isalnum(c) && !isspace(c))) {
// ispunct untuk simbol umum, tambahan !isalnum dan !isspace untuk karakter simbol lainnya
jumlahSimbol++;
}
}
// Cetak hasil
cout << "\nHasil analisis kata sandi:\n";
cout << "Jumlah angka : " << jumlahAngka << endl;
cout << "Jumlah huruf kapital : " << jumlahHurufKapital << endl;
cout << "Jumlah huruf kecil : " << jumlahHurufKecil << endl;
cout << "Jumlah simbol : " << jumlahSimbol << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8Y2N0eXBlPiAgLy8gVW50dWsgZnVuZ3NpIGlzZGlnaXQsIGlzdXBwZXIsIGlzbG93ZXIsIGlzYWxwaGEsIGlzcHVuY3QKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIHN0cmluZyBrYXRhU2FuZGk7CgogICAgY291dCA8PCAiTWFzdWtrYW4ga2F0YSBzYW5kaTogIjsKICAgIGdldGxpbmUoY2luLCBrYXRhU2FuZGkpOyAgLy8gTWVtYmFjYSBzZWx1cnVoIGJhcmlzIHRlcm1hc3VrIHNwYXNpIChqaWthIGFkYSkKCiAgICAvLyBJbmlzaWFsaXNhc2kgcGVuZ2hpdHVuZwogICAgaW50IGp1bWxhaEFuZ2thID0gMDsKICAgIGludCBqdW1sYWhIdXJ1ZkthcGl0YWwgPSAwOwogICAgaW50IGp1bWxhaEh1cnVmS2VjaWwgPSAwOwogICAgaW50IGp1bWxhaFNpbWJvbCA9IDA7CgogICAgLy8gUGVyaWtzYSBzZXRpYXAga2FyYWt0ZXIgZGFsYW0ga2F0YSBzYW5kaQogICAgZm9yIChjaGFyIGMgOiBrYXRhU2FuZGkpIHsKICAgICAgICBpZiAoaXNkaWdpdChjKSkgewogICAgICAgICAgICBqdW1sYWhBbmdrYSsrOwogICAgICAgIH0gZWxzZSBpZiAoaXN1cHBlcihjKSkgewogICAgICAgICAgICBqdW1sYWhIdXJ1ZkthcGl0YWwrKzsKICAgICAgICB9IGVsc2UgaWYgKGlzbG93ZXIoYykpIHsKICAgICAgICAgICAganVtbGFoSHVydWZLZWNpbCsrOwogICAgICAgIH0gZWxzZSBpZiAoaXNwdW5jdChjKSB8fCAoIWlzYWxudW0oYykgJiYgIWlzc3BhY2UoYykpKSB7CiAgICAgICAgICAgIC8vIGlzcHVuY3QgdW50dWsgc2ltYm9sIHVtdW0sIHRhbWJhaGFuICFpc2FsbnVtIGRhbiAhaXNzcGFjZSB1bnR1ayBrYXJha3RlciBzaW1ib2wgbGFpbm55YQogICAgICAgICAgICBqdW1sYWhTaW1ib2wrKzsKICAgICAgICB9CiAgICB9CgogICAgLy8gQ2V0YWsgaGFzaWwKICAgIGNvdXQgPDwgIlxuSGFzaWwgYW5hbGlzaXMga2F0YSBzYW5kaTpcbiI7CiAgICBjb3V0IDw8ICJKdW1sYWggYW5na2EgICAgICAgICAgOiAiIDw8IGp1bWxhaEFuZ2thIDw8IGVuZGw7CiAgICBjb3V0IDw8ICJKdW1sYWggaHVydWYga2FwaXRhbCAgOiAiIDw8IGp1bWxhaEh1cnVmS2FwaXRhbCA8PCBlbmRsOwogICAgY291dCA8PCAiSnVtbGFoIGh1cnVmIGtlY2lsICAgIDogIiA8PCBqdW1sYWhIdXJ1ZktlY2lsIDw8IGVuZGw7CiAgICBjb3V0IDw8ICJKdW1sYWggc2ltYm9sICAgICAgICAgOiAiIDw8IGp1bWxhaFNpbWJvbCA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9Cgo=