파아랑새 2017. 2. 9. 22:45

# 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