#include <stdlib.h>
#include <iostream>
#include <algorithm>
#define MAX 100
using namespace std;
void DisplayQueue(int queue[], int front, int counter)
{
for (int i = 0; i < counter; i++)
{
printf("%c", queue[(front + i) % MAX]);
}
}
void Enqueue(int queue[], int *rear, int *counter, char value)
{
if(*counter < MAX)
{
*rear = (*rear + 1) % MAX;
queue[*rear] = value;
*counter = *counter + 1;
}
else
{
// printf("Error: the queue is full.\n");
}
}
void Dequeue(int queue[], int *front, int *counter, int *value)
{
if (*counter == 0)
{
// printf("Error: the queue is empty.\n");
}
else
{
*value = queue[*front];
*front = (*front + 1) % MAX;
*counter = *counter-1;
}
}
int main()
{
char f;
printf("\t\t=====Cek Palindrom ASD 5110100124====\n\n");
while(1)
{
int antri[MAX],antri2[MAX],antri3[MAX],antri4[MAX];
int front = 0, front2=0,front3=0,front4=0;
int rear = -1,rear2=-1,rear3=-1,rear4=-1;;
int counter = 0,counter2=0,counter3=0,counter4=0;
int value,value2,value3,value4,h; char c,kat[19],s=0,d=1;
int n=1; char a,b;
printf("Masukkan kata/kalimat (akhiri dengan *) : ");
while (d==1)
{
scanf("%c",&c); if(c=='*') d=0;
if(c>=65&&c<92||c>=97&&c<124)
{
if(c>96) c=c-32; s++;
Enqueue(antri, &rear, &counter, c);
Enqueue(antri2, &rear2, &counter2, c);
}
}
for (int x = 1; x <=s; x++)
{
for (int j=s;j>=1;j--)
{
if(x%2==1)
{
Dequeue(antri2, &front2, &counter2, &value2);
Enqueue(antri3, &rear3, &counter3, value2);
if(x==j) Enqueue(antri4, &rear4, &counter4, value2);
}
if(x%2==0)
{
Dequeue(antri3, &front3, &counter3, &value3);
Enqueue(antri2, &rear2, &counter2, value3);
if(x==j) Enqueue(antri4, &rear4, &counter4, value3);
}
}
}
printf("\n");
printf("Kata/kalimat sebelum dibalik : ");
DisplayQueue(antri, front, counter); printf("\n\n");
printf("Kata/kalimat sesudah dibalik : ");
DisplayQueue(antri4, front4, counter4); printf("\n\n");
for (int x=1;x<=s;x++)
{
Dequeue(antri, &front, &counter, &value);
Dequeue(antri4, &front4, &counter4, &value4);
a=value; b=value4;
if(a!=b)
{
n=0; break;
}
}
if(n==1) printf("Selamat, kata yang anda masukkan ternyata : Palindrom\n\n\n\n\n");
else
printf("Maaf anda belum beruntung, kata yang anda masukkan ternyata : Bukan Palindrom\n\n\n\n\n");
}
}
/*Agus Nugroho 5110100124*/
0 komentar:
Posting Komentar