소개글
#include#include
#include
#define MAX 20
char _toupper(char ch); // 대문자 변환
char _tolower(char ch); // 소문자 변환
int _toascii(int ch); // 아스키 변환
void _strget(char a[]);
int _isalpha(char ch); // 알파벳 확인
int _isupper(char ch); // 대문자 확인
int _islower(char ch); // 소문자 확인
int _isdigit(char ch); // 숫자 확인
int _isalnum(char ch); // 알파벳, 숫자 확인
int _isspace(char ch); // 공백문자 확인
int _square(int t, int n)
{
//////////////////////////////////////
/*2를 n번 곱해주는 함수. */
//////////////////////////////////////
int i;
for(i = 0; i < n; i++) t *= 2; // 2의 n승을 계산함.
return t;
}
1. 알파벳, 숫자, 빈칸 확인 함수의 제작 문제
입력된 문자에서 문자와 숫자 등을 구별하기 위해서는 아스키코드를 이용해야 한다. 하지만 입력된 문자는 아스키코드로 인식되며, 코드 상에서 ``를 이용해서 문자를 지정하면 아스키코드로 비교되기 때문에 프로그램 구현에 있어서는 해당 문자의 아스키코드를 정확히 알 필요는 없다. 따라서 이번 프로그램에서는 특정 아스키코드를 정확하게 사용하지 않고 문자를 바로 이용하여 알파벳 또는 숫자, 빈칸 등을 구별하여 본다.
2. 대문자, 소문자 변환 함수의 제작 문제
입력된 알파벳을 대문자 또는 소문자로 변환하기 위해서는 아스키코드 상에서의 대문자와 소문자의 규칙을 알아야 한다. 현재 아스키코드는 대문자를 65부터 90까지 소문자를 97부터 122까지 사용하고 있다. 따라서 그 차이는 32가 되며 소문자에서 32를 빼면 대문자, 대문자에서 32를 더하면 소문자가 되는 것이다. 프로그램에서는 대문자, 소문자 확인 함수를 이용해서 32를 더하거나 빼주어 대/소문자의 변환을 실현 시킬 수 있을 것이다.
3. 아스키코드 변환 함수의 제작 문제
아스키코드 변환 함수는 입력된 정수의 7비트를 짤라 아스키코드로 변환 가능하게 해주는 기능을 한다. 아스키코드는 0에서 127까지를 사용하기 때문이다. 따라서 정수형의 숫자를 입력하면 그것을 이용하여 뒤의 7비트를 짤라 리턴해주는 방식을 이용하면 될 것이다. 이를 위해서는 shift 연산과 AND 연산을 이용하면 되고, 그 결과를 크기 7짜리 정수형 배열에 저장하여 다시 10진수로 변환하면 될 것이다.
4. 알파벳, 소문자, 대문자, 숫자, 빈칸 확인 함수 알고리즘 및 플로우 차트
(1) 간략한 알고리즘
입력된 문자의 내용을 확인하는 함수는 기본적으로 아스키코드로 목적 문자여부를 확인하는 방식을 취하면 된다. 따라서 전달 받은 파라미터를 검사하고 그 결과를 리턴하는 단순한 방식으로 구현이 가능하다. 이를 간단하게 나타내면 아래와 같다.
ⅰ. 입력받은 문자 ch가 `A`에서 `Z` 사이라면 대문자이다.
ⅱ. 입력받은 문자 ch가 `a`에서 `z`사이라면 소문자이다.
ⅲ. 입력받은 문자 ch가 `0`에서 `9`사이라면 숫자이다.
ⅳ. 입력받은 문자 ch가 ⅰ 또는 ⅱ의 조건을 만족하면 알파벳이다.
ⅴ. 입력받은 문자 ch가 ⅳ조건을 만족하거나 ⅲ의 조건을 만족하면 숫자 또는 알파벳이다.
ⅵ. 입력받은 문자 ch가 ` `라면 빈칸이다.
2) 플로우 차트
위 작성한 알고리즘에 따라 알파벳, 소문자, 대문자, 빈칸, 숫자 확인 함수의 플로우 차트를 작성하면 아래와 같다.
컴파일 실행환경
C언어압축파일 내 파일목록
ctype.dsw
ctype.ncb
ctype.plg
type.cpp
ctype.opt
ctype.dsp
2.jpg
ctype.hwp
Debug/vc60.idb
Debug/vc60.pdb
Debug/ctype.pch
Debug/ctype.pdb
Debug/type.obj
Debug/ctype.ilk
Debug/ctype.exe
ctype.ncb
ctype.plg
type.cpp
ctype.opt
ctype.dsp
2.jpg
ctype.hwp
Debug/vc60.idb
Debug/vc60.pdb
Debug/ctype.pch
Debug/ctype.pdb
Debug/type.obj
Debug/ctype.ilk
Debug/ctype.exe