내배캠 2-2 계산기 로직

STONE·2024년 10월 29일

Swift_Ios

목록 보기
10/44

오류

계산기 로직을 구현하다가 나머지 연산을 수행하는 과정에서 오류가 발생했다.

// 첫 나머지 연산 코드
func divide(_ a: Double, _ b: Double) -> (result: Double, remainder: Double)? {
        guard b != 0 else {
            print("나누려는 수가 0 입니다.")
            return nil
        }
        let result = a / b
        let remainder = a % b
        return (result, remainder)
}

오류 내용

Swift에서 Double 타입에는 % 연산이 안되고 따로 truncatingRemainder(dividingBy:)메서드를 사용해야 한다.

// truncatingRemainder(dividingBy:) 사용법
let a: Double = 10.0
let b: Double = 5.0

var result = a.truncatingRemainder(dividingBy: b)

전체 코드

// 각 연산 클래스 
class AddOperation {
    func calculate(_ a: Double, _ b: Double) -> Double {
        return a + b
    }
}

class SubtractOperation {
    func calculate(_ a: Double, _ b: Double) -> Double {
        return a - b
    }
}

class MultiplyOperation {
    func calculate(_ a: Double, _ b: Double) -> Double {
        return a * b
    }
}

class DivideOperation {
    func calculate(_ a: Double, _ b: Double) -> (result: Double, remainder: Double)? {
        guard b != 0 else {
            print("나누려는 수가 0 입니다")
            return nil
        }
        let result = a / b
        let remainder = a.truncatingRemainder(dividingBy: b)
        return (result, remainder)
    }
}

// Calculator 클래스
class Calculator {
    private let addOperation = AddOperation()
    private let subtractOperation = SubtractOperation()
    private let multiplyOperation = MultiplyOperation()
    private let divideOperation = DivideOperation()

    func add(_ a: Double, _ b: Double) -> Double {
        return addOperation.calculate(a, b)
    }

    func subtract(_ a: Double, _ b: Double) -> Double {
        return subtractOperation.calculate(a, b)
    }

    func multiply(_ a: Double, _ b: Double) -> Double {
        return multiplyOperation.calculate(a, b)
    }

    func divide(_ a: Double, _ b: Double) -> (result: Double, remainder: Double)? {
        return divideOperation.calculate(a, b)
    }
}

//수행 부분
let calculator = Calculator()

print("10 + 5 = \(calculator.add(10, 5))")

print("10 - 5 = \(calculator.subtract(10, 5))")

print("10 * 5 = \(calculator.multiply(10, 5))")

if let resultDiv = calculator.divide(10, 0) {
    print("10 / 3 = \(resultDiv.result), 나머지는 : \(resultDiv.remainder)")
} else {
    print("나누기 Error.")
}
profile
흠...?

0개의 댓글