Senin, 07 November 2011

1

[C] Teknik Membaca Satu Baris String Secara Keseluruhan

  • Senin, 07 November 2011
  • Nurkholish Ardi Firdaus
  • Dalam bahasa C, scanf() merupakan fungsi yang bisa kita gunakan untuk meminta input dari user yang selanjutnya data input tadi akan kita olah secara lebih lanjut dalam progran kita. Data bisa berupa angka maupun karakter, kita bisa memanggil fungsi scanf() seperti ini: scanf("%s",array_char);  jika kita meminta user untuk mengimput data berupa kata. Namun ketika datanya berupa kalimat yang dipisahkan oleh spasi maka scanf() hanya akan membaca 1 kata pertama sebelum spasi, sebut saja user memasukkan input kata berupa "Aku Seorang Kapiten", maka scanf() hanya akan membaca kata "Aku" sedangkan sisanya akan diabaikan. Ini sesuai konsep bahwa dalam bahasa C, whitespace (spasi) adalah penanda akhir inputan. Jadi kita terkendala dengan karakter spasinya yang oleh compiler dibaca sebagai akhir kata. Lalu bagaimana solusinya? Banyak sekali solusi yang bisa kita gunakkan, salah satunya adalah menggunakan ekspresi reguler (regular expression), sintaks pemanggilan fungsi scanf() menjadi seperti ini: scanf("%[^\n]s",array_char); arti dari panggilan fungsi scanf() ini menjadi: "Baca semua karakter kecuali \n" dimana "\n" adalah salah satu backslash character constant yang artinya adalah newline (garis baru), jadi arti keseluruhannya adalah "Baca semua karakter hingga baris baru tercipta", baris baru tercipta ketika user menekan enter yang berarti berganti baris ("\n"). Marilah kita praktikkan secara langsung lewat source code dibawah ini:


    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        char nama_lengkap[50];
        scanf("%50[^n]s",nama_lengkap);
        printf("Nama Lengap Anda: %-50s",nama_lengkap);
    }
    Oke, sekian postingan kali ini. Semoga bermanfaat :)
    1

    [C] Membuat Program Segitiga

  • Nurkholish Ardi Firdaus
  • Oke, lama tidak posting. Kali ini saya akan berbagi source code yang menampilkan segitiga yang tersusun dari suatu karakter. Source code ini saya tulis dalam bahasa C. Oke cekidot...









    /*
        UNIVERSITAS NEGERI SEMARANG
        NAMA: NURKHOLISH ARDI FIRDAUS
        NIM : 5302411244
    */
    
    #include <stdio.h>
    #include <stdlib.h>
    
    void prism(int line, const char *chr);
    
    int main()
    {
        printf("#################################n");
        printf("## UNIVERSITAS NEGERI SEMARANG ##n");
        printf("##   Nurkholish Ardi Firdaus   ##n");
        printf("##         5302411244          ##n");
        printf("##      Mengambar Prisma       ##n");
        printf("#################################n");
    
        prism(15,"+");
    
        return 0;
    }
    
    void prism(int line, const char *chr)
    {
        if (!(line % 2 == 0)) {   //lantai harus bilangan ganjil
            int prism_floor, draw_space, draw_char;
            for (prism_floor=1;prism_floor<=line;prism_floor++) {
                //cetak spasi sesuai dg baris (jika baris 1 maka cetak spasi (line-1) kali
                for (draw_space=line-1;draw_space>=prism_floor;draw_space--) printf(" ");
                for (draw_char=1;draw_char<=prism_floor;draw_char++) {  // Jika lantai 1, cetak 2 char, lantai 2 cetak 4 char
                    printf(chr);    // cetak 2x
                    printf(chr);}   //
                printf("n");  //newline
            }
        }
    }
    
    Sebenarnya masih ada kekurangan dalam program ini, apakah anda bisa melihat apa kekurangannya?? Ya, benar. Sisi atas segitiga tidak lancip melainkan tumpul karena terdiri dari 2 karakter. Mugkin anda bisa memodifikasinya, kuncinya adalah penempatan karakter output pada terminal. Semoga bermanfaat :).

    Subscribe