Description
[안내사항]
1. 모든 문제는 C++의 standard 입출력(i.e., cin, cout)을 기본으로 합니다.
2. 채점용 testcase를 통과한 개수에 비례하여 프로그램 기능 점수가 부여됩니다.
– (통과 case / 총 case) * 채점 기준에 명시된 프로그램 기능 점수
– testcase는 공개되지 않습니다.
[감점]
1. 제출 기한이 지나면 얻은 총점의 20% 감점
2. 하루(24시간) 늦을 때마다 추가 20%씩 감점
– 1일 이내: 20% 감점, 2일 이내: 40% 감점, 3일 이내: 60% 감점 4일 이내:80% 감점
– 4일 이상 지연: 0점
3. 컴파일이 정상적으로 되지 않을 경우 프로그램 기능 점수 0점
[제출방식]
채점은 Windows Visual Studio 2022 환경에서 이루어집니다. 파일을 업로드하실 때, 작업하신 환경이
있는 프로젝트 폴더에서 디버그 폴더를 삭제한 후 그대로 압축해서 올려 주시기 바랍니다. 폴더명은
문제#_학번(e.g., prob1_20229999)으로 만들어 주십시오. 또한 문제 폴더 안에 각 문제에 해당하는
Report(prob1_20229999_report)도 같이 넣어서 zip파일로 만든 후 제출해 주시기 바랍니다.
이때, 문제마다 따로 프로젝트를 생성하고, 따로 압축하여 제출해 주시기 바랍니다. 즉, 총 3개의
파일을 제출하셔야 합니다. 제출은 반드시 PLMS를 통해 제출해주시기 바랍니다. 이메일 제출은
인정되지 않습니다. 4일 이상 지연 제출할 경우 0점이므로 4 일 ( 3월 21일 23시 59분 59초)이 지난
이후는 PLMS를 통해 제출하실 수 없습니다.
제출파일 예시) prob1_20229999.zip, prob2_20229999.zip, prob3_20229999.zip
[채점기준]
1. 프로그램 기능 – 50%
l 프로그램이 요구 사항을 모두 만족하면서 올바로 실행되는가?
2. 프로그램 설계 및 구현 – 35%
l 요구 사항을 만족하기 위한 변수 및 알고리즘 설계가 잘 되었는가?
l 각 문제에서 제시한 세부 조건의 유의사항을 모두 만족하였는가?
l 입력과 출력이 주어진 형식에 맞게 프로그램이 잘 작동하는가?
3. 프로그램 가독성 – 5%
l 프로그램이 읽기 쉽고 이해하기 쉽게 작성되었는가?
l 변수 명이 무엇을 의미하는지 파악하기 쉬운가?
l 프로그램의 소스 코드를 이해하기 쉽도록 주석을 잘 붙였는가?
4. 보고서 구성 및 내용, 양식 – 10%
l 보고서는 적절한 내용으로 이해하기 쉽고 보기 좋게 잘 작성되었는가?
l 보고서의 양식을 잘 따랐는가?
l 각 문제에서 제시한 질문이 있다면, 그에 대한 답변이 충분한가?
[주의사항]
다른 사람의 프로그램이나 인터넷에 있는 프로그램을 단순히 복사(copy)하거나 수정해서
제출하면 부정행위로 간주됩니다. 부정행위 발견 시 ‘F’ 학점을 받을 수 있으며, 학과에서 정한
기준에 따라 추가적인 불이익이 있을 수 있습니다.
문제 1번 (배점 30점)
포항공대 학생 준영이는 객체 지향 프로그래밍 수업을 수강하기 전, 겨울방학 기간동안 주어진
10진수를 2진수 (혹은 8진수, 16진수)로 변환하는 프로그램을 만들기로 하였다. 10진수와 변환해야
할 진수가 주어질 때, 실행결과를 바르게 출력하시오.
[입력]
10진수와 변환해야 할 진수가 int type으로 주어진다.
[출력]
주어진 10진수를 변환해야 할 진수로 나타낸다.
[세부조건]
1. std::hex, std::oct는 사용이 불가능하다.
[입출력 예시]
input output
119 2
119 8
119 16
1110111
167
77
문제 2번 (배점 30점)
포항공대 학생 민수는 겨울방학 기간동안 계산기 프로그램을 만들고 있다. 이때 민수가 만들어야 하는
계산기는 ‘+’, ‘-‘, ‘*‘, ‘/‘, ‘sqrt’, ‘square’로 총 6가지 연산이 가능한 계산기이다. 연산과 두 개의 숫자를
입력으로 받아서 연산 결과를 바르게 출력하시오. 이때, sqrt 와 square 연산은 하나의 숫자만 주어진다.
[입력]
1. 연산자는 char (array)자료형이며, 두 개의 숫자는 float 자료형이다.
2. 계산기가 받아들일 수 있는 연산자는 ‘+’, ‘-‘, ‘*‘, ‘/‘, ‘sqrt’, ‘square’이며 각각은 순서대로 덧셈,
뺄셈, 곱셉, 나눗셈, 루트(√
!
), 제곱( !)을 의미한다.
3. 연산자와 각 숫자 사이에는 공백 한 칸이 있다.
[출력]
주어진 입력에 기초하여 연산결과를 바르게 출력한다.
[세부조건]
2. 계산 결과가 소수점 아래 3자리보다 길 경우 소수점 셋째 자리까지 반올림하여 출력한다.
ex) 3.986 ∗ 2.515 = 10.02479 ≅ 10.025 (소수점 셋째 자리까지 반올림)
3. 입력의 두 번째 숫자에 0이 들어오는 상황은 고려하지 않는다.
4. 정수로 떨어지는 경우에는 소수로 표현하지 않아도 된다.
[입출력 예시]
input output
+ 1.35 2.47
* 3.986 2.515
/ 24.999 3.900
– -101.35 2.47
square 4
sqrt 4
3.820
10.025
6.410
-103.820
16
2
문제 3번 (배점 40점)
포항공대 학생 준영이와 민수는 겨울방학 기간동안 각자가 만든 프로그램(문제1, 문제2)을 기반으로
하나의 통합된 계산기 프로그램을 만들고자 한다. 이들이 만들고자 하는 프로그램은 두 개의 숫자(2진수
or 8진수 or 16진수)와 연산을 입력으로 받은 후, 이를 10진수로 출력하는 것이다. 연산과 두 개의 숫자를
입력으로 받아서 연산 결과를 바르게 출력하시오.
[입력]
1. 연산자는 char type, 숫자는 std::string type이 입력으로 들어온다. 이때, 두 개의 숫자는 2진수 or
8진수 or 16진수이다. 각각의 진수는 ‘0b’, ‘0’, ‘0X’가 숫자 앞에 붙어서 표현된다. 예를 들어, 0b1001,
020, 0X2F와 같이 2, 8, 16진수가 표현이 가능하다.
2. 계산기가 받아들일 수 있는 연산은 ‘+’, ‘-‘, ‘*‘, ‘/‘이며 각각 순서대로 덧셈, 뺄셈, 곱셉, 나눗셈을
의미한다.
3. 연산자와 각 숫자 사이에는 공백 한 칸이 있다.
[출력]
주어진 입력에 기초하여 연산결과를 10진수로 출력한다.
[세부조건]
1. 계산 결과가 소수점 아래 3자리보다 길 경우 소수점 셋째 자리까지 반올림하여 출력한다.
2. 입력의 두 번째 숫자에 0이 들어오는 상황은 고려하지 않는다.
3. 정수로 떨어지는 경우에는 소수로 표현하지 않아도 된다.
4. 입력으로 음수나 소수는 들어오지 않는다.
[입출력 예시]
input output
+ 0X52 0b1000
– 070 0XF
* 0b10 031
/ 0XFF 032
90
41
50
9.808