Microsoft Word - assn2_v9.docx

Similar documents
Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

OCW_C언어 기초

PowerPoint 프레젠테이션

Microsoft PowerPoint - Chapter_02.pptx

중간고사

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

C 프로그램의 기본

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

PowerPoint Presentation

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

Microsoft PowerPoint - Lesson2.pptx

금오공대 컴퓨터공학전공 강의자료

C 프로그래밊 개요

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

Problem 1: 스택자료구조구현 (20 점 ) ( 목적 ) 이문제에서는프로그래밍시사용되는자료구조중하나인스택을직접구현해봄으로써, 구조체와포인터를익힌다. ( 스택의정의 ) 스택은쌓아올린더미를의미하며한쪽끝에서만삽입과삭제과일어나는자료구조이다. 즉, 스택구조는아이템을 Las

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - 2주차-1차시 (강의자료) ch01 - C Programming 기초 (part 2)

OCW_C언어 기초

Microsoft PowerPoint - chap-03.pptx

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

설계란 무엇인가?

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - chap-06.pptx

Microsoft PowerPoint - chap10-함수의활용.pptx

컴파일러

Microsoft PowerPoint - C++ 5 .pptx

C 프로그래밊 개요

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

Microsoft PowerPoint - ch07 - 포인터 pm0415

C 언어 프로그래밊 과제 풀이

Microsoft PowerPoint - Chapter_08.pptx

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap06-4 [호환 모드]

쉽게 풀어쓴 C 프로그래밍

Lab 3. 실습문제 (Single linked list)_해답.hwp

PowerPoint 프레젠테이션

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

ch15

게임 기획서 표준양식 연구보고서

Chapter_06

쉽게 풀어쓴 C 프로그래밍

int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \

슬라이드 1

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

02장.배열과 클래스

금오공대 컴퓨터공학전공 강의자료

윈도우즈프로그래밍(1)

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

11장 포인터

Microsoft PowerPoint - chap-05.pptx

Microsoft PowerPoint - chap12-고급기능.pptx

본 강의에 들어가기 전

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB>

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

프로그램의실행화면 주석 (comment) 두수의합 : 300 /* 두개의숫자의합을계산하는프로그램 */ 주석은코드를설명하는글입니다. 주석 3 가지방법의주석 주석의예 /* 한줄로된주석 */ /* 저자 : 홍길동날짜 : 2013.

Microsoft PowerPoint - gnu-w10-c-chap11

Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor


PowerPoint 프레젠테이션

Microsoft PowerPoint - C프로그래밍-chap15.ppt [호환 모드]

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

untitled


Java ...

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

untitled

C++ Programming

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont

Microsoft PowerPoint - chap01-C언어개요.pptx

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>

untitled

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Microsoft PowerPoint - additional01.ppt [호환 모드]

JAVA PROGRAMMING 실습 02. 표준 입출력

4.0 개요 p.116 수식 (expression) 연산자 (operator) 와피연산자 (operand) 로구성 수식은평가 (evaluate) 되어최종적으로 1 개의결과값이됨 피연산자 : 상수, 변수, 또다른수식 sum - 10 (a+b) / 2 연산자 2

Microsoft Word - OOPT stage 2040 ver2.docx

Microsoft PowerPoint - chap11-포인터의활용.pptx

PowerPoint 프레젠테이션

슬라이드 1

Line (A) å j a k= i k #define max(a, b) (((a) >= (b))? (a) : (b)) long MaxSubseqSum0(int A[], unsigned Left, unsigned Right) { int Center, i; long Max

; struct point p[10] = {{1, 2, {5, -3, {-3, 5, {-6, -2, {2, 2, {-3, -3, {-9, 2, {7, 8, {-6, 4, {8, -5; for (i = 0; i < 10; i++){ if (p[i].x > 0 && p[i

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

06 세상을 변화시키는 연산자

슬라이드 1

쉽게 풀어쓴 C 프로그래밍

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

Microsoft PowerPoint - chap06-2pointer.ppt

TEST BANK & SOLUTION

설계란 무엇인가?

Transcription:

CSED101. Programming & Problem solving Spring, 2014 Programming Assignment #2 (60 points) 김용현 (gkyh0805@postech.ac.kr) Due: 2014. 04. 15 23:59 Development Environment: Windows Visual Studio 2010 제출물 C code file (assn2.c) 프로그램의소스코드를이해하기쉽도록반드시주석을붙일것. 보고서파일 (.doc(x) or.hwp) 예 ) assn2.doc(x) 또는 assn2.hwp AssnReadMe.pdf 를참조하여작성할것. 소스코드와보고서파일을 LMS를이용하여제출한다. 주의사항 각문제에해당하는요구사항을반드시지킬것. 컴파일 & 실행이안되면무조건 0점처리된다. 하루 late시 20% 가감점되며, 3일이상지나면받지않는다. (0점처리 ) 부정행위에관한규정은 POSTECH 전자컴퓨터공학부학부위원회의 POSTECH 전자컴퓨터공학부부정행위정의 를따른다. (LMS의과목공지사항의제목 [document about cheating] 의첨부파일인 disciplinary.pdf를참조할것.) assn2.c로제출할것. 그외의다른이름으로제출하면감점또는 0점처리된다. 이번과제에서는추가기능구현에대한추가점수는없습니다. 1

Problem: 숫자게임 ( 목적 ) 이숙제를통하여조건문, 반복문, 사용자정의함수및라이브러리함수사용법을익힌다. ( 문제 ) 숫자게임프로그램은암산게임의일종으로제한시간동안제공되는사칙연산 ( 덧셈, 뺄셈, 곱셈, 나눗셈 ) 을풀고최고점수를달성하는게임이다. 아래의설명을바탕으로 숫자게임 을작성해보도록하자. 단, 매실행마다다른문제가생성되도록작성한다. 전역변수는사용할수없으며, 아직수업시간에다루지않은배열, 구조체를사용하지않고프로그램을작성한다. ( 설명 ) 문제를해결하기전, 문제와함께제공된 assn2_game.exe를실행하여게임을즐겨보도록 (?) 하자. 게임을실행하면, 빈칸으로처리된수식과빈칸에대한정답후보 2개가주어진다. 사용자는 [, ] 키를통해좌, 우측의정답을선택한다. 정답을선택한경우 Score가 1점추가되고틀릴경우남은시간이 2초줄어든다. 프로그램을실행하면아래의그림과같이 숫자게임 이실행된다. 2

수식을출력하기위해수식을생성하는방법은아래와같다. 먼저프로그램은내부적으로완전한수식을생성한다. 수식은아래와같이숫자 3개와연산자하나로구성된다. 단, 아래의숫자 3개는모두자연수라고가정한다. 생성된수식의예 ) 17-8 = 9 왼쪽피연산자 (Left Operand): 17 연산자 (Operator): - 오른쪽피연산자 (Right Operand): 8 연산결과 : 9 수식생성및문제와정답후보출력방법 1. 연산자선택프로그램에서사용되는연산자는사칙연산자 (+, -, *, /) 중하나가랜덤하게선택된다. 2. 완전한수식생성 ( 내부수식 ) 선택된연산자를이용하여내부수식을생성한다. 생성될숫자의범위 : 1 ~ (9 + Score) 사용자가문제를맞출때마다문제의난이도를높이기위해서랜덤하게선택될숫자의범위를 1씩증가하도록한다. 즉, Score는 0으로시작해서사용자가문제를맞출때마다 1점씩증가하고랜덤하게선택될숫자의범위도 1씩증가한다. - 덧셈, 곱셈왼쪽피연산자, 오른쪽피연산자의숫자를제시된범위안에서랜덤하게선택하여수식완성 - 뺄셈, 나눗셈오른쪽피연산자, 연산결과의숫자를제시된범위안에서랜덤하게선택하여수식완성위의생성된수식으로설명을하면, 오른쪽피연산자가 8, 연산결과가 9로선택되면, 왼쪽피연산자의값은 17의값이되도록수식을완성한다. 3. 숨겨질숫자의위치선택왼쪽피연산자, 오른쪽피연산자, 연산결과중에서숨겨질숫자의위치를랜덤하게선택하도록한다. 숨겨질숫자가사용자가맞춰야할정답에해당한다. 4. 사용자가선택할정답 1개의후보생성오답인숫자를랜덤하게생성한다. 생성될숫자의범위는위와동일하다. 선택된오답이정답과같은값이나오지않도록한다. 5. 정답을포함하여 2개의정답후보의출력순서를랜덤하게결정한다. 위의과정이끝나면, 아래와같이화면에빈칸있는수식과함께 2개의정답후보가출력이된다. 화면출력예 ) 17 - [ ] = 9 3 <=> 8 사용자는 [, ] 키를통해좌, 우측의정답을선택한다. 정답을선택한경우 Score가 1점추가되고, 오답을선택한경우남은시간이 2초줄어든다. 그리고, 다음문제가출력된다. 사용자의정답입력중, [, ] 키외의입력은없다고가정한다. 3

게임중남은시간의실시간출력 [Time : xx.xx ]: 밀리초까지출력되게작성하며키입력으로인해시간출력이멈추지않도록한다. 남은시간계산을위해아래의 Tips 에서설명하고있는 clock() 함수를이용하도록한다. 남은시간을실시간을출력하기위해형식문자열 \r 을출력문에사용하도록한다. \r 을출력할경우출력화면의커서가해당라인의맨앞으로이동하게된다. 이를이용해남은시간을실시간으로출력할수있다. 아래의사용예제를참고하시오. 사용예제 printf( Hello World ); printf( \rkorea ); 실행결과 : Korea World ( 주의사항 ) 시간출력을위해전체화면을지우는 system( cls ) 를사용하지말것. ( 이를사용하게되면전체화면이깜빡이게됨.) 게임종료제한시간이경과하면게임이끝난다. 이게임에서의제한시간은 30초라고가정한다. 게임이끝나면, 현재점수와 Best Score를비교해서현재점수가 Best Score 보다더크면 Congratulations!! You got the best score. 를메시지를출력한다. ( 그렇지않은경우메시지가출력되지않는다.) 그후에, One more game? [y/n] 메시지가출력되고사용자의입력을기다린다. 사용자가 y 를선택하면다시게임이시작되고 Best Score가갱신되며, n 을선택하면게임이종료된다. ( y, n 을제외한다른문자입력에대해서는고려하지않아도된다.) 아래는제한시간이경과해서게임이종료됐을때의출력화면에해당한다. 4

아래는위의화면에서사용자입력을 y 로받은경우에해당한다. Best Score가갱신되고다시게임이시작된다. 사용자정의함수반드시아래의함수를정의해서사용해야하며, 아래함수외의필요한함수는정의해서사용할수있다. getletftime: 남은시간을리턴하는함수 printequation: 수식을출력하는함수수식출력시아래의출력문을사용 ( 아래의출력문을복사해서사용하세요.) - 왼쪽피연산자빈칸출력 : printf("[ ] %3c %3d = %3d\n", ); - 오른쪽피연산자빈칸출력 : printf("%3d %3c [ ] = %3d\n", ); - 연산결과빈칸출력 : printf("%3d %3c %3d = [ ]\n", ); getoperatortochar: 수식을구성하는연산자는 +, *, -, / 순서대로 0, 1, 2, 3의정수 (int) 에대응하여저장및사용한다. 이때연산자번호를함수의입력으로전달받아그번호에대응되는문자 (char) 즉, +, *, -, / 중하나를리턴하는함수이다. 수식출력등에사용할수있다. 그외의출력문 ( 복사해서사용하세요.) printf("---------------------------\n"); 문제의출력형식은채점을위해위쪽의실행예시와최대한비슷하게작성해주세요. 5

Tips 남은시간계산 clock_t clock(void): 프로그램실행후경과된시간을리턴하는함수 - 이함수는시스템으로부터현재시간을 millisecond 단위로가져오며 1초는 1000 밀리세컨드가된다. 경과된시간은 clock() 함수를이용하여현재시간과이전시간의차로계산한다. - <time.h> 에포함되어있음 clock_t 형은 long 형으로 time.h 에정의되어있다. 화면지우기 int system(char*): 명령프롬프트 (cmd) 상에정의되어있는명령어 (dir, cls 등 ) 을실행하는함수 - <stdlib.h> 에포함되어있음 - 사용예제 #include <stdlib.h> int main() { printf( Hello World\n ); system( cls ); // 화면에 Hello World 출력후, 화면을지움 대기없이키보드입력 scanf를사용하여키보드입력을받게되면입력라인에서프로그램이멈추게된다. 본프로그램은게임의형식을취하고있기때문에실시간입력이가능해야한다. 아래의두함수를응용하여키보드입력을받을수있다. int _kbhit(void): 키입력을체크하는함수 - 키입력이있으면 0 이외의값을, 아니면 0을리턴한다. - <conio.h> 에포함되어있음 int _getch(void): 화면에출력없이키보드로부터하나의문자를입력받는함수 - 엔터를누르지않고도키보드입력을받을수있고, 누른키가화면에출력되지않기때문에게임을엔터키없이진행할수있다. - 누른키보드의값을리턴한다. - <conio.h> 에포함되어있음 6