회문
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
# define Length 10000
# define True 1
typedef struct _1234 {
char num[Length];
int mark; // 회문 ok: 1 no: 0
}_1234;
// _1
void _Fsize_(_1234** BaeKJun, int* size) {
scanf("%d", size);
(*BaeKJun) = (_1234*)malloc(sizeof(_1234)*(*size));
if ((*BaeKJun) == NULL) { exit(1); }
else { // (*BaeKJun) != NULL
memset((*BaeKJun), 0, sizeof(_1234)*(*size));
}
} // end of _Fsize_ function
// _2
void _FdataInsert_(_1234** BaeKJun, int* size) {
int i; // index
getchar(); // buffer empty!!
for (i = 0; i < (*size); i++) {
gets((*BaeKJun)[i].num);
//printf("Leng => %d\n", strlen((*BaeKJun)[i].num));
}
} // end of _Fdata_ function
// _3
void _FEvenAndOdd_(_1234** BaeKJun, int* size) {
int i;
int fRont = 0;
int rRear = 0;
int flag = 0;
int temp = 0;
for (i = 0; i < (*size); i++) {
rRear = strlen((*BaeKJun)[i].num) - 1;
if (strlen((*BaeKJun)[i].num) %2 == 0) { // Even_number
while (True) {
if ((*BaeKJun)[i].num[fRont] != (*BaeKJun)[i].num[rRear]) {
flag = 1;
break;
}
else {
//(*BaeKJun)[i].num[fRont] == (*BaeKJun)[i].num[rRear]
temp = fRont;
temp++;
if (temp == rRear) {
if ((*BaeKJun)[i].num[fRont] != (*BaeKJun)[i].num[rRear]) {
flag = 1;
break;
}
else { // (*BaeKJun)[i].num[fRont] == (*BaeKJun)[i].num[rRear]
break;
}
}
}
fRont++;
rRear--;
}
}
else { // Odd_number
while (True) {
if ((int)(*BaeKJun)[i].num[fRont] != (int)(*BaeKJun)[i].num[rRear]) {
flag = 1;
break;
}
if (fRont == rRear) { break; }
fRont++;
rRear--;
}
}
if (flag == 1) { (*BaeKJun)[i].mark = 0; }
if (flag == 0) { (*BaeKJun)[i].mark = 1; }
flag = 0;
fRont = 0;
}
} // end of _FEvenAndOdd_ function
void _FResult_(_1234** BaeKJun, int* size) {
int i;// index
for (i = 0; i < (*size); i++) {
printf("%d\n", (*BaeKJun)[i].mark);
}
} // end of _FResult_ function
int main(void) {
_1234* BaeKJun = NULL;
int size = 0;
_Fsize_(&BaeKJun, &size);
_FdataInsert_(&BaeKJun, &size);
_FEvenAndOdd_(&BaeKJun, &size);
_FResult_(&BaeKJun, &size);
free(BaeKJun);
return 0;
} // end of main function