fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <cctype>
  4. #include <numeric> // Untuk std::accumulate
  5.  
  6. int main() {
  7. std::string kataSandi;
  8. std::cout << "Masukkan kata sandi: ";
  9. std::getline(std::cin, kataSandi);
  10.  
  11. // Hitung setiap jenis karakter dengan std::accumulate dan lambda
  12. int jumlahAngka = std::accumulate(kataSandi.begin(), kataSandi.end(), 0, [](int total, char c){
  13. return total + std::isdigit(c);
  14. });
  15.  
  16. int jumlahHurufKapital = std::accumulate(kataSandi.begin(), kataSandi.end(), 0, [](int total, char c){
  17. return total + std::isupper(c);
  18. });
  19.  
  20. int jumlahHurufNonKapital = std::accumulate(kataSandi.begin(), kataSandi.end(), 0, [](int total, char c){
  21. return total + std::islower(c);
  22. });
  23.  
  24. // Simbol dihitung dengan mengurangi total karakter dengan karakter lainnya
  25. int jumlahSimbol = kataSandi.length() - jumlahAngka - jumlahHurufKapital - jumlahHurufNonKapital;
  26.  
  27. // Tampilkan hasil
  28. std::cout << "\n--- Hasil Analisis Kata Sandi ---\n";
  29. std::cout << "Jumlah angka: " << jumlahAngka << "\n";
  30. std::cout << "Jumlah huruf kapital: " << jumlahHurufKapital << "\n";
  31. std::cout << "Jumlah huruf non-kapital: " << jumlahHurufNonKapital << "\n";
  32. std::cout << "Jumlah simbol: " << jumlahSimbol << "\n";
  33.  
  34. return 0;
  35. }
Success #stdin #stdout 0.01s 5320KB
stdin
Standard input is empty
stdout
Masukkan kata sandi: 
--- Hasil Analisis Kata Sandi ---
Jumlah angka: 0
Jumlah huruf kapital: 0
Jumlah huruf non-kapital: 0
Jumlah simbol: 0