Skip to content
25 Oktober 2009 / Jeffrey Hermanto Halimsetiawan

Problem Solving – Latihan Soal Palindrome @Faizal



/* Program Palindrome Rekursi
 * Program akan mengecek kalimat yang diinptkan dari belakang dan depan.
 * Apabila kalimat dibaca dari belakang dan depan sama, maka disebut Palindrome.
 * Spasi dan match case tidak akan dihiraukan oleh program ini
 * Oleh : Jeffrey Hermanto H
 * Senin, 5 November 2007
 */

#include    //definisi printf,scanf,gets
#include    //definisi getch
#include   //definis fungsi string
#define MAX 100      //konstanta isi max array

//prototipe fungsi
int palindrome (char string[], int L, int i);

int main()
{
    char string[MAX];    //input : kalimat yang akan dicek
    int L,               //input : indeks maks array
        cek;             //output: indikator palindrome atau tidak
    //memasukkan kalimat
    printf("Masukkan Sebuah Kalimat : ");
    gets(string);
    //menghitung indeks array maks
    L = strlen(string)-1;
    //mengecek palindrome suatu kalimat
    cek = palindrome(string,L,0);
    //mencetak palindrome atau bukan
    if (cek==1)
      printf("Palindrome");
    else printf("Bukan Palindrome");
    getch();           //menahan tampilan output pada layar
    return 0;
}

/* fungsi untuk mengecek palindrome yang akan me-return nilai 1 jika palindrome
   dan 0 jika bukan palindrome
 */
int palindrome (char string[], //par. input : kalimat yang akan dicek
                int L,         //par. input : indeks array maks
                int i)         //par. input : indeks awal array
{
   //mengecek character spasi pada akhir string dan akan dilewati jika ditemukan
   if (string[L]==' ')
   {
       do
       {
          L--;
       }
       while (string[L]==' ');
   }
   //mengubah character pada akhir sting menjadi upper case
   if ((int(string[L])>=97)&&(int(string[L])<=122))       string[L]=int(string[L])-32;           //mengecek character spasi pada awal string dan akan dilewati jika ditemukan            if (string[i]==' ')    {        do        {           i++;        }        while (string[i]==' ');    }     //mengubah character pada akhir sting menjadi upper case    if ((int(string[i])>=97)&&(int(string[i])<=122))       string[i]=int(string[i])-32;      //rekursi akan terus berjalan selama indeks akhir array >= 0
   if (L>=0)
   {
       //jika char awal dan akhir sama akan dilakukan rekursi
       if (string[L]==string[i])
       {
           //mengurangi indeks akhir array
           L--;
           //menambah indeks awal array
           i++;
           //memanggil fungsi palindrome kembali
           palindrome(string,L,i);
           return 1;
       }
       //mengembalikan nilai 0 jika char awal dan akhir tidak sama
       else return 0;
   }
}

Semoga bermanfaat😀

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: