Histogram Sederhana (Clang)
#1
[Image: 430909_185794041567135_210828367_n.jpg]

Code:
/**
write a program to print a histogram
of the lengths of words in its input
.it is easy to draw the histogram
with the bars horizontal; a vertical
orientation is more challenging
**/

#include <stdio.h>

//konstanta gerakan akumulasi kata
#define OUT    0
#define IN    1

main()
{
    //variabelisasi
    int c,i,nw,nc,state,T,X;
    /**
     c = karakter
     i = akumulasi perulangan karakter pembentuk grafik
     nw = tempat kata
     nc = tempat karakter
     state = tempat perubahan konstanta gerakan akumulasi kata
     T = seperti i
     X = seperti i & T
     **/
    
    //inisialisasi, pemberian awal 0
    nc = nw = 0;
    //inisialisasi var pada posisi OUT = 0
    state = OUT;
    
    //pemasukkan karakter c melalui perulangan while,
    //berhenti jika karakter tersebut adalah titik (.)    
    while((c=getchar())!='.'){
        //setiap masukkan karakter var nc diakumulasi dengan 1
        ++nc;
        //Akan di seleksi JIKA:
        //jika karakter dari variable c adalah salah satu dari spasi,
        //tab ataupun enter maka variabel state tetap pada OUT value
        if(c==' '||c=='\t'||c=='\n') state = OUT;
        //opsi selain itu: jika if diatas ditereksekusi
        //else if akan aktif dan melihat state pada
        //boolean true maka counter dari kata akan
        //di tambah dengan 1
        else if(state == OUT){
            ++nw;
            //state kembali pada posisi tidak diijinkan
            //mengakumulasi
            state = IN;
        }
    }
    //mencetak whitespace 2 newline
    printf("\n\n");
    printf("%d karakter, %d kata\n",nc,nw);


/**
********************************
*    histogram horizontal    *
********************************
**/

    printf("HISTOGRAM HORIZONTAL\n");
    printf("--------------------\n");

    //perulangan untuk mencetak index 0 hingga jumlah kata
    //posisi horizontal dengan jarak tab    
        for(i=0;i<=nw;++i)
            printf("%d\t",i);
        putchar('\n'); //white space 1 new line
    //perulangan untuk mencetak bagian grafik horizontal dengan
    //karakter assignment
        for(i=0;i<=nw*8;++i)
            putchar('=');
        putchar('\n'); //white space 1 new line
        
    //perulangan untuk mencetak sudut kanan grafik horizontal
        for(i=0;i<=nw*8;++i)
        //pemberian seleksi untuk memberi karakter pada posisi (nw*8)
            if(i==(nw*8))
                putchar('|');
        //pemberian seleksi opsi untuk memberi karakter pada posisi < (nw*8)
            else
                putchar(' ');
        putchar('\n'); //white space 1 new line
    //perulangan untuk mencetak bagian grafik horizontal dengan
    //karakter assignment        
        for(i=0;i<=nw*8;++i)
            putchar('=');
        putchar('\n'); //white space 1 new line
    
    
    for(c=0;c<=nw;++c)
{
    //printf("%d  ",c);
    putchar('\n');
    for(i=0;i<=(c*3);++i)
        printf("-");
    putchar('\n');
    for(i=0;i<=(c*3);++i)
        printf(" ");
    printf("|%d",c);
    putchar('\n');
    for(i=0;i<=(c*3);++i)
        printf("-");
    putchar('\n');
}
        
/**
*********************************
* histogram vertical            *
*********************************
**/
    putchar('\n'); //white space 1 new line
    printf("HISTOGRAM VERTICAL...X = karakter, Y = Kata\n");
    printf("-------------------------------------------\n");
    
    //perulangan untuk mencetak nilai: jumlah kata hingga 0
    //dengan T sebagai variable    
    for(T=nw;T>=0;--T){
        printf("%d",T);     
        //pemberian seleksi untuk memberi karakter sepanjang
        //x hingga (nw*6)
        //jika var T telah menjadi 0
        if(T==0){
            for(X=0;X<=(nw*6);++X)
                printf("_");
            break; //penghentian
        }
        //pemberian karakter pada posisi (nw*7)
        //dengan jarak X sampai (nw*6)
        //dengan syarat jumlah T sama dengan nw
        else if(T==nw) {
            for(X=0;X<=(nw*6);++X)
                putchar(' ');
            printf("--");        
        }
        putchar('\n'); //white space 1 new line
        
        //perulangan untuk memberikan jarak newline
        //dengan karakter | antara jumlah kata hingga 0
        for(i=0;i<=1;++i){
            printf("|");
            //perulangan untuk memberikan karakter pada posisi (nw*7)
            //se-horizontal dengan karakter |
            //dengan pemberian jarak dengan spasi sejumlah
            //x hingga (nw*6)
            for(X=0;X<=(nw*6);++X)    
                printf(" ");
            printf("||\n");
        }
    }
    //mencetak nilai karakter pada posisi grafik x
    printf("%d|\n",nc);
}

Salam.
SENJA INI

#2
mantab si om, udah ane test..
tapi sayangnya imagenya rusak tuh :3






Users browsing this thread: 1 Guest(s)