Presentation is loading. Please wait.

Presentation is loading. Please wait.

문자열 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,

Similar presentations


Presentation on theme: "문자열 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,"— Presentation transcript:

1 문자열 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호, hwlee@inje.ac.kr

2 다음과 같이 동작하는 행맨(hangman) 프로그램을 작성하시오.
사용자가 주어진 문장을 알아 맞히도록 하시오. 사용자는 한 문자 또는 문장을 입력할 수 있도록 하시오. 사용자가 입력한 문자가 정답에 있는지를 판단하고 있으면 찾은 문자열에 추가하는 함수 check를 만들어 사용하시오.

3 알고리즘 : main 문장을 다 맞출 때 까지 다음을 반복한다. 최종 정답을 출력한다. 현재까지 찾은 정답 문장을 출력한다.
문자 또는 문장을 입력하도록 출력한다. 표준출력 버퍼를 비운다. 다음을 무한히 반복한다. 문자를 하나 받아들인다. 현재 입력한 문자가 ‘\r’(carriage return) 이면 표준입력버퍼를 비우고 반복을 종료한다. 문장을 다 맞추었으면(check) 다 맞추었다는 표시를 하고 반복을 종료한다. 최종 정답을 출력한다.

4 필요한 변수 : main 임의로 정한 문장을 저장할 문자열 변수(solution)
사용자가 맞춘 문자열을 저장할 문자열 변수(answer) 사용자가 입력한 문자를 저장할 문자 변수(ch) 다 맞추었다는 표시를 저장할 정수형 변수(done)

5 알고리즘 : main ch와 done을 0으로 초기화 한다. done 이 0이면 다음을 반복한다. 최종 정답을 출력한다.
현재까지 찾은 정답 문장(answer[])을 출력한다. 문자 또는 문장을 입력하도록 출력한다. 표준출력 버퍼를 비운다. 다음을 무한히 반복한다. 문자를 하나 받아들인다. 현재 입력한 문자가 ‘\r’(carriage return) 이면 표준입력버퍼를 비우고 반복을 종료한다. Check함수의 결과가 1이면 done에 1을 대입하고 반복을 종료한다. 최종 정답을 출력한다.

6 알고리즘 : check 매개변수 리턴 값 정답문자열을 저장하는 문자배열(s[])
사용자가 현재 찾은 문자열을 저장하는 문자배열(a[]) 현재 사용자가 추측한 문자를 저장하는 문자 변수(ch) 리턴 값 정수( 0 : 정답과 일치하지 않음, 1: 정답과 일치함)

7 알고리즘 : check i를 0부터 s[i]가 NULL 까지 1씩 증가 시키면서 다음을 반복한다.
s[i] 가 ch와 같으면 ch를 a[i]에 대입한다. s와 a가 일치하면 1을 리턴하고 아니면 0을 리턴한다.

8 프로젝트 생성 프로젝트명 입력 : hangman Empty Project 선택 Cygwin GCC 콤파일러 선택
생성된 빈 프로젝트

9 소스 작성(1) main 함수 소스파일명 입력 : hangman.c

10 소스 작성(2) main 함수 소스수정 생성된 빈 소스 파일 실행프로그램이 되기 위한 최소 내용이 추가된 소스 파일
hangman.c hangman.c hangman.c 소스수정 생성된 빈 소스 파일 실행프로그램이 되기 위한 최소 내용이 추가된 소스 파일

11 소스작성(3) main 함수 배열의 크기를 지정하는 매크로 상수 SIZE 정의 main 함수에서 호출할 함수의 원형 선언
맞추어야할 문자열을 저장하는 배열 변수 선언 맞춘 문자열을 저장하는 배열 변수 선언 받아들인 문자와 종료 판단 변수 맞추었는지를 체크하는 함수 호출 결과를 출력 main함수의 알고리즘과 사용할 함수의 원형을 추가 한 소스

12 소스작성(4) check 함수 맞추어야할 문자배열 매개변수 현재까지 맞춘 문자배열 매개변수 현재 추측한 문자 매개변수
반복문을 위한 지역 변수 선언 추측한 문자가 존재하면 해당하는 문자를 대체한다. 모든 문자에 대해서 추측한 문자가 있는지를 확인하는 반복문 앞에서 작성한 main함수에 이어서 작성한 check 함수 이 함수는 사용자가 문장을 다 맞추었는지를 체크한다.

13 소스작성(6) 전체 소스

14 실행 하기 프로그램 실행예 소스 저장 프로젝트 빌드 프로그램 실행

15 제12장 Programming 문제 2번 문자열을 입력으로 받아서 문자열에 포함된 모든 공백 문자를 삭제하는 함수를 작 성하고 테스트하라. 문자열을 받아들이는 함수를 작성하시오.(get_string) 문자열을 받아들일 때는 getchar() 함수를 사용하시오. 공백문자를 삭제하는 함수를 작성하시오.(delete_space)

16 알고리즘 : main 문자열을 받아들여서 문자 배열에 저장한다.(get_string)
받아들인 문자열에서 모든 공백 문자를 삭제한다.(delete_space) 결과를 출력한다.

17 필요한 변수 : main 받아들인 문자열을 저장할 배열 변수(sentence[])
공백을 삭제한 문자열을 저장할 배열 변수(nospace[])

18 알고리즘 : get_string 매개변수 리턴 값 받아들인 문자열을 저장하는 문자배열(s[])
없음

19 알고리즘 : get_string i를 0으로 초기화 한다. 공백이 있는 문자열을 입력하라는 메시지를 출력한다.
표준 출력버퍼를 비운다. i가 N-1 보다 작으면 i를 1씩 증가 시키면서 다음을 반복한다. 문자를 받아들여서 ch에 저장한다. ch 가 ‘\r’(CR) 이면 표준입력버퍼를 비우고 반복을 종료 한다. 아니면 s[i]에 ch를 대입한다. 마지막 문자에 ‘\0’을 대입한다.

20 알고리즘 : delete_space 매개변수 리턴 값 받아들인 문자열을 저장하는 문자배열(s[])
공백을 지운 문자열을 저장하는 문자배열(no[]) 리턴 값 없음

21 알고리즘 : delete_space i, j를 0으로 초기화 한다.
s[i] 가 ‘\0’ 이 아니면 i를 1씩 증가 시키면서 다음을 반복한다. s[i] 가 빈칸이면 반복을 계속한다. no[j]에 s[i]를 대입한다. j를 1 증가 시킨다. No[j]에 ‘\0’을 대입한다.

22 프로젝트 생성 프로젝트명 입력 : ch12ex02 Empty Project 선택 Cygwin GCC 콤파일러 선택
생성된 빈 프로젝트

23 소스 작성(1) main 함수 소스파일명 입력 : main.c

24 소스 작성(2) main 함수 소스수정 생성된 빈 소스 파일 실행프로그램이 되기 위한 최소 내용이 추가된 소스 파일
main.c main.c main.c 소스수정 생성된 빈 소스 파일 실행프로그램이 되기 위한 최소 내용이 추가된 소스 파일

25 소스작성(3) main 함수 배열의 크기를 지정하는 매크로 상수 MAX_SIZE 정의
문자열을 받아들이는 함수와 공백을 제거하는 함수의 원형 선언 받아들인 문자열과 공백을 제거한 문자열을 저장할 변수 선언 공백을 포함하는 문자열을 받아들이는 함수 호출 문자열에서 공백문자 제거하는 함수 호출 결과를 출력 main함수의 알고리즘과 사용할 함수의 원형을 추가 한 소스

26 소스작성(4) get_string 함수 받아들이는 문장의 최대 길이를 저장한 매개변수 받아들인 문장을 저장할 문자배열 매개변수
반복문을 위한 지역 변수와 문자를 저장할 지역 선언 문장을 입력하라는 메시지를 출력한다. 표준출력버퍼를 비운다. 문자를 표준입력버퍼에서 읽어들인다. 문자가 ‘\r’ 이면 표준입력버퍼를 비우고 반복을 종료한다. 아니면 문자를 배열에 할당한다. 사용자가 엔터키를 입력할 때까지의 문자열을 받아서 배열에 저장하는 반복문 앞에서 작성한 main함수에 이어서 작성한 get_string 함수 이 함수는 사용자가 입력한 문장을 받아서 문자배열에 저장한다.

27 소스작성(5) delete_space 함수
공백을 제거한 문자열을 저장할 문자배열 매개변수 받아들인 문장을 저장할 문자배열 매개변수 반복문을 위한 지역 변수 선언 i=0, j=0으로 시작하여 NULL문자가 나올 때까지 i를 1씩 증가 시키면서 다음을 만복한다. s[i]가 공백이면 반복을 계속한다. 아니면 s[i]를 no[j]에 할당한다. j를 1증가 시킨다. 입력한 문장의 끝까지 검색하여 공백을 제거하는 반복문 앞에서 작성한 get_string함수에 이어서 작성한 delete_space 함수 이 함수는 매개변수로 넘어온 문자열에서 공백을 제외한 문자열을 구한다.

28 소스작성(6) 전체 소스

29 프로그램 실행예 실행 하기 소스 저장 프로젝트 빌드 프로그램 실행

30 스크린 샷 예제 511쪽 7, 9번 512쪽 13, 14번 513쪽 16번 5월 19일 오후 1시 30분까지 제출


Download ppt "문자열 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,"

Similar presentations


Ads by Google