티스토리 뷰
문제
화씨온도를 섭씨온도로, 섭씨온도를 화씨온도로 바꾸려고 합니다. 두 온도 사이의 환산 공식은 다음과 같습니다
환산공식
- 화씨온도에서 섭씨온도로 환산 : (화씨온도 - 32) / 1.8 = 섭씨온도
- 섭씨온도에서 화씨온도로 환산 : (섭씨온도 * 1.8) + 32 = 화씨온도
현재 온도 value와 현재 단위 unit이 매개변수로 주어질 때, 환산한 온도의 정수 부분을 return 하도록 solution함수를 작성했습니다.
그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다.
주어진 코드에서 한 줄 만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.
주어진 코드
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int value, char* unit) {
int converted = 0;
if (unit[0] == 'C')
converted = value * 1.8 + 32;
if (unit[0] == 'F')
converted = value - 32 / 1.8;
return converted;
}
int main() {
int value = 527;
char* unit = "C";
int ret = solution(value, unit);
printf("solution 함수의 반환 값은 %d 입니다.\n", ret);
value = 980;
unit = "F";
ret = solution(value, unit);
printf("solution 함수의 반환 값은 %d 입니다.\n", ret);
}
결과(오류) => 화씨 908도는 섭씨 526도이다.
value | unit | return |
527 | "C" | 980 |
980 | "F" | 962 |
코드분석(오류해결)
단계 | 과정 |
main | 변환할 온도가 담겨있는 변수 value와 그것의 방식이 무엇인지가 담겨있는 변수 unit를 선언한 후 solution함수를 호출한다. |
solution | 변환한 값을 넣을 변수 converted를 선언한다. 방식(unit)이 섭씨(C)일때, 이 값은 화씨(F)로 변환해야 하기 때문에 변환식 converted = value * 1.8 + 32;를 진행한다. 방식(unit)이 화씨(F)일때, 이 값은 섭씨(C)로 변환해야 하기 때문에 변환식 converted = value - 32 / 1.8;를 진행한다. |
오류 | 화씨 -> 섭씨로 변환하는 식에서 converted = value - 32 / 1.8;를 그대로 진행하면 연산자 우선순위에 의하여 32/1.8이 진행되고 난 후에 value와 뺄셈식이 적용된다. 따라서 비교적 우선순위가 낮은 -식에 괄호를 사용해야 한다. |
solution | 변환값 converted를 반환한다. |
main | 결과를 출력한 후 프로그램을 종료한다. |
결과코드(최종)
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int value, char* unit) {
int converted = 0;
if (unit[0] == 'C')
converted = value * 1.8 + 32;
if (unit[0] == 'F')
converted = (value - 32) / 1.8;
return converted;
}
int main() {
int value = 527;
char* unit = "C";
int ret = solution(value, unit);
printf("solution 함수의 반환 값은 %d 입니다.\n", ret);
value = 980;
unit = "F";
ret = solution(value, unit);
printf("solution 함수의 반환 값은 %d 입니다.\n", ret);
}
결과
value | unit | return |
527 | "C" | 980 |
980 | "F" | 526 |
'[코테] > [GroomEdu]' 카테고리의 다른 글
[COS PRO 2급] 3차 1번_학생의 등수 구하기 (C/C++) (0) | 2021.05.13 |
---|---|
[COS PRO 2급] 2차 9번_투표에 대한 후보 찾기 (0) | 2021.05.12 |
[COS PRO 2급] 2차 8번_소수의 갯수 구하기 (C/C++) (0) | 2021.05.11 |
[COS PRO 2급] 2차 5번_몬스터 공격하기 (C/C++) (0) | 2021.05.10 |
[COS PRO 2급] 2차 6번_엘리베이터의 총 이동거리 구하기 (C/C++) (0) | 2021.05.10 |
댓글
공지사항
최근에 올라온 글
TAG
- cospro기출문제
- 구름에듀 기출문제
- C
- YBM
- Cos Pro
- 코딩테스트
- 1급
- Java
- 구름에듀
- lv2
- CosPro
- 구름 기출문제
- 코스프로
- groomedu
- groom
- COSPRO 2급
- 배열활용문제
- programmers
- YBM기출
- 프로그래머스
- 알고리즘
- 배열
- cospro기출
- lv1
- c언어 기출문제
- c언어
- C++
- 자바
- 연습문제
- 기출문제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함