IT/솔루션) 난 정말C... 없다구요

21장. 실력 다지기 연습문제 03 ) 문제 4 [회문 판단]

돔찌 2019. 4. 17. 20:18

<2016. 9. 26. 20:59>

21장. 실력 다지기 연습문제 03 ) 문제 4 [회문 판단]

 

/*
회문(palindrome)은 앞으로 읽으나 뒤로 읽으나 동일한 단어를 말한다.
예를들어서 level과 noon은 회문이다. 이렇듯 프로그램 사용자가 ㅇ비력한 단어가 회문인지 아닌지 판단하는 프로그램을 작성하자
그리고 대소문자가 함께 입력되더라도 회문으로 판단할 수 있어야 한다. 쉽게 말해서 프로그램 사용자가 level이 아닌 Level로 입력하더라도 회문으로 인식해야 한다.
*/
#include<stdio.h>
#include<stdlib.h>
#pragma warning(disable : 4996)
int wordlen(char str[]);
int wordcheck(char str[]);
char alpachange(char alpa);
int main(void) {
	char word[20];
	int i;
	printf("단어 입력 : ");
	scanf("%s", word);
	if (wordcheck(word) == 1)
	  printf("입력하신 단어는 회문입니다."); else
	  printf("입력하신 단어는 회문이 아닙니다.\n");
	system("pause");
	return 0;
}
int wordlen(char str[]) {
	int len = 0;
	while (str[len] != '\0')
	  len++;
	len -= 1;
	printf("len은 %d\n", len);
	return len;
}
int wordcheck(char str[]) {
	int i;
	int len;
	int middle = wordlen(str) / 2;
	printf("middle은 %d\n", middle);
	for (i = 0; i < middle; i++) {
		if (alpachange(str[i]) != alpachange(str[wordlen(str) - i])) {
			printf("%c와 %c는 같지 않습니다.\n", str[i], str[wordlen(str) - i]);
			return 0;
		}
	}
	return 1;
}
char alpachange(char alpa) {
	int differ = 'a' - 'A';
	if (alpa >= 'A' && alpa <= 'Z')
	  alpa += differ;
	return alpa;
}