이번에 1주차 개인과제로 계산기를 만들어 보는 시간을 가졌다
계산기 과제는 총 lv.1부터 lv.4까지의 단계로 이루어져 있으며
단계마다 요구하는 사항들이 다 다르다.
내가 작성한 코드를 기반으로 해서
튜터님이 해설한 강의를 참고해보면서 해결 과정을 작성하고자한다
일단 먼저 lv.1 ~ lv.2 까지의 과정을 살펴보자
사실상 lv.2는 lv.1에 나머지 연산만 추가한것이라서
한번에 작성하도록 하겠다
우선 전체 코드문을 캡쳐한 것이다.
사실 처음에 함수당 기능을 하나씩 배정해서 작성할 예정이었다
그래서 호출을 아래와 같이 하려고 했는데
calculator.add(firstNumber: 10, secondNumber: 5)
과제에 제시되어 있는 입력 예시를 보니 아래와 같았다
let addResult = calculator.calculate(operator: "+", firstNumber: 10, secondNumber: 20)
음 그래서 저 operator
라는 변수를 보고나서 switch
문으로 해야겠다고 생각했다. 뭐 어디까지나 예시고 답은 아니지만 일단 따라가기로 했다
그래서 operator
변수를 받는 부분을 먼저 작성했다
func calculate(operation: String, firstNumber: Int, secondNumber: Int) -> Double {
switch operation {
case "+":
return Double(firstNumber + secondNumber)
case "-":
return Double(firstNumber - secondNumber)
case "/":
return Double(firstNumber) / Double(secondNumber)
case "*":
return Double(firstNumber * secondNumber)
case "%":
return Double(firstNumber % secondNumber)
default:
return -1
}
각 연산자 기호에 따라 해당되는 부분을 채워넣었고
연산자가 아닌 다른 값이 들어올 경우 -1
를 반환하도록 작성했다
위의 코드가 첫번째에 올린 사진과 다른 부분이 있는데
나누기 연산부분의 코드가 조금 다르다
연산된 전체 값에 Double
형 변환을 해주면 0.5
라는 값이 나와야 하는 상황에서 0.0
을 반환하게 된다.
이게 Int
변수 2개를 받아서 연산을 진행하게되서 나타나는 현상이다
Double
변수를 받아서 계산하는 경우에는 문제없이 된다.
추후에 발견하여 수정했다
lv.3 ~ lv.4 부분도 곧 작성하도록 하겠다