#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main( ) {
char kata_sandi[ 100 ] ; // Array untuk menyimpan kata sandi (maksimal 99 karakter)
int huruf_kapital = 0 ;
int huruf_nonkapital = 0 ;
int angka = 0 ;
int simbol = 0 ;
int i = 0 ;
// Meminta input kata sandi dari pengguna
printf ( "Masukkan kata sandi: " ) ;
// Menggunakan fgets untuk membaca input baris dengan aman
if ( fgets ( kata_sandi, sizeof ( kata_sandi) , stdin ) ! = NULL ) {
// Menghapus karakter newline '\n' yang mungkin dibaca oleh fgets
kata_sandi[ strcspn ( kata_sandi, "\n " ) ] = '\0 ' ;
}
// Mengiterasi setiap karakter dalam kata sandi
while ( kata_sandi[ i] ! = '\0 ' ) {
if ( isupper ( kata_sandi[ i] ) ) { // Memeriksa apakah karakter adalah huruf kapital
huruf_kapital++ ;
} else if ( islower ( kata_sandi[ i] ) ) { // Memeriksa apakah karakter adalah huruf non-kapital
huruf_nonkapital++ ;
} else if ( isdigit ( kata_sandi[ i] ) ) { // Memeriksa apakah karakter adalah angka
angka++ ;
} else { // Jika bukan huruf atau angka, maka itu adalah simbol
simbol++ ;
}
i++ ;
}
// Mencetak hasil
printf ( "\n Analisis Kata Sandi:\n " ) ;
printf ( "-------------------------\n " ) ;
printf ( "Jumlah Huruf Kapital : %d\n " , huruf_kapital) ;
printf ( "Jumlah Huruf Non-kapital: %d\n " , huruf_nonkapital) ;
printf ( "Jumlah Angka : %d\n " , angka) ;
printf ( "Jumlah Simbol : %d\n " , simbol) ;
printf ( "-------------------------\n " ) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPGN0eXBlLmg+CgppbnQgbWFpbigpIHsKICAgIGNoYXIga2F0YV9zYW5kaVsxMDBdOyAvLyBBcnJheSB1bnR1ayBtZW55aW1wYW4ga2F0YSBzYW5kaSAobWFrc2ltYWwgOTkga2FyYWt0ZXIpCiAgICBpbnQgaHVydWZfa2FwaXRhbCA9IDA7CiAgICBpbnQgaHVydWZfbm9ua2FwaXRhbCA9IDA7CiAgICBpbnQgYW5na2EgPSAwOwogICAgaW50IHNpbWJvbCA9IDA7CiAgICBpbnQgaSA9IDA7CgogICAgLy8gTWVtaW50YSBpbnB1dCBrYXRhIHNhbmRpIGRhcmkgcGVuZ2d1bmEKICAgIHByaW50ZigiTWFzdWtrYW4ga2F0YSBzYW5kaTogIik7CiAgICAvLyBNZW5nZ3VuYWthbiBmZ2V0cyB1bnR1ayBtZW1iYWNhIGlucHV0IGJhcmlzIGRlbmdhbiBhbWFuCiAgICBpZiAoZmdldHMoa2F0YV9zYW5kaSwgc2l6ZW9mKGthdGFfc2FuZGkpLCBzdGRpbikgIT0gTlVMTCkgewogICAgICAgIC8vIE1lbmdoYXB1cyBrYXJha3RlciBuZXdsaW5lICdcbicgeWFuZyBtdW5na2luIGRpYmFjYSBvbGVoIGZnZXRzCiAgICAgICAga2F0YV9zYW5kaVtzdHJjc3BuKGthdGFfc2FuZGksICJcbiIpXSA9ICdcMCc7CiAgICB9CgogICAgLy8gTWVuZ2l0ZXJhc2kgc2V0aWFwIGthcmFrdGVyIGRhbGFtIGthdGEgc2FuZGkKICAgIHdoaWxlIChrYXRhX3NhbmRpW2ldICE9ICdcMCcpIHsKICAgICAgICBpZiAoaXN1cHBlcihrYXRhX3NhbmRpW2ldKSkgeyAvLyBNZW1lcmlrc2EgYXBha2FoIGthcmFrdGVyIGFkYWxhaCBodXJ1ZiBrYXBpdGFsCiAgICAgICAgICAgIGh1cnVmX2thcGl0YWwrKzsKICAgICAgICB9IGVsc2UgaWYgKGlzbG93ZXIoa2F0YV9zYW5kaVtpXSkpIHsgLy8gTWVtZXJpa3NhIGFwYWthaCBrYXJha3RlciBhZGFsYWggaHVydWYgbm9uLWthcGl0YWwKICAgICAgICAgICAgaHVydWZfbm9ua2FwaXRhbCsrOwogICAgICAgIH0gZWxzZSBpZiAoaXNkaWdpdChrYXRhX3NhbmRpW2ldKSkgeyAvLyBNZW1lcmlrc2EgYXBha2FoIGthcmFrdGVyIGFkYWxhaCBhbmdrYQogICAgICAgICAgICBhbmdrYSsrOwogICAgICAgIH0gZWxzZSB7IC8vIEppa2EgYnVrYW4gaHVydWYgYXRhdSBhbmdrYSwgbWFrYSBpdHUgYWRhbGFoIHNpbWJvbAogICAgICAgICAgICBzaW1ib2wrKzsKICAgICAgICB9CiAgICAgICAgaSsrOwogICAgfQoKICAgIC8vIE1lbmNldGFrIGhhc2lsCiAgICBwcmludGYoIlxuQW5hbGlzaXMgS2F0YSBTYW5kaTpcbiIpOwogICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKICAgIHByaW50ZigiSnVtbGFoIEh1cnVmIEthcGl0YWwgICA6ICVkXG4iLCBodXJ1Zl9rYXBpdGFsKTsKICAgIHByaW50ZigiSnVtbGFoIEh1cnVmIE5vbi1rYXBpdGFsOiAlZFxuIiwgaHVydWZfbm9ua2FwaXRhbCk7CiAgICBwcmludGYoIkp1bWxhaCBBbmdrYSAgICAgICAgICAgOiAlZFxuIiwgYW5na2EpOwogICAgcHJpbnRmKCJKdW1sYWggU2ltYm9sICAgICAgICAgIDogJWRcbiIsIHNpbWJvbCk7CiAgICBwcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwoKICAgIHJldHVybiAwOwp9