Swift POP Interest Calculation

We have give task for Swift POP Interest Calculation as -

---Un editable Code---
import Foundation
protocol Interest{
    var p:Double {get}
    var t:Int {get}
    var r:Double {get}
    var interest:Double {get}
    var amount:Double {get}
}
---END Un editable Code---
---Editable Code---
class BaseInterest: Interest {
        var p:Double
        var t:Int 
        var r:Double 
        var interest:Double 
        var amount:Double 
        init(_ p:Double, _ t:Int, _ r:Double, _ interest:Double _ amount:Double) {
            self.p = p;
            self.t  = t;
            self.r  = r;
            self.interest  = interest;
            self.amount  = amount;
        }
    }

class Compound:BaseInterest{
    var n1 : Int = 0
    init(p1 p:Double,t1 t:Int,r1 r:Double, n1 n: Double) {
            n1 = n
            super.init(p, t, r)
        }
    let CIA = p1(1 + r/n1)^(n1*t1);
    print(CIA)
}
class Simple:BaseInterest{
    init(p1 p:Double,t1 t:Int,r1 r:Double) {
            n1 = n
            super.init(p, t, r)
        }
    let SI = p1 * t1 * r1;
    print(SI)
}
---End editable Code---
---Un editable Code---
let stdout = ProcessInfo.processInfo.environment["OUTPUT_PATH"]!
FileManager.default.createFile(atPath: stdout, contents: nil, attributes: nil)
let fileHandle = FileHandle(forWritingAtPath: stdout)!

guard let p = Double((readLine()?.trimmingCharacters(in: .whitespacesAndNewlines))!)
else { fatalError("Bad input") }
guard let t = Int((readLine()?.trimmingCharacters(in: .whitespacesAndNewlines))!)
else { fatalError("Bad input") }
guard let r = Double((readLine()?.trimmingCharacters(in: .whitespacesAndNewlines))!)
else { fatalError("Bad input") }
guard let n = Int((readLine()?.trimmingCharacters(in: .whitespacesAndNewlines))!)
else { fatalError("Bad input") }

var interest:Interest = Simple(p:p,t:t,r:r)
fileHandle.write(String(interest.interest).data(using: .utf8)!)
fileHandle.write("\n".data(using: .utf8)!)
fileHandle.write(String(interest.amount).data(using: .utf8)!)
fileHandle.write("\n".data(using: .utf8)!)

interest = Compound(p:p,t:t,r:r,n:n)
fileHandle.write(String(interest.interest).data(using: .utf8)!)
fileHandle.write("\n".data(using: .utf8)!)
fileHandle.write(String(interest.amount).data(using: .utf8)!)
fileHandle.write("\n".data(using: .utf8)!)
---END Un editable Code---

When we running it then we are getting compilation error.

1 Like

import Foundation

protocol Interest{
var p:Double {get}
var t:Int {get}
var r:Double {get}
var interest:Double {get}
var amount:Double {get}

}

class Compound: Interest {
var p = 0.0
var r = 0.0
var t = 0
var n = 0
var interest = 0.0
var amount = 0.0

init(p: Double, t: Int, r: Double, n:Int){
    let power = Double(n*t)
    let ci = (1 + r/Double(n))
    self.amount = ((p*pow(ci, power)) * 100).rounded() / 100
    self.interest = ((self.amount - p) * 100).rounded() / 100 
}

}

class Simple: Interest {
var p = 0.0
var r = 0.0
var t = 0
var interest = 0.0
var amount = 0.0
init(p: Double, t: Int, r: Double){
self.interest = ((prDouble(t)) * 100).rounded() / 100
self.amount = self.interest + p
}
}
let stdout = ProcessInfo.processInfo.environment["OUTPUT_PATH"]!
FileManager.default.createFile(atPath: stdout, contents: nil, attributes: nil)
let fileHandle = FileHandle(forWritingAtPath: stdout)!

guard let p = Double((readLine()?.trimmingCharacters(in: .whitespacesAndNewlines))!)
else { fatalError("Bad input") }
guard let t = Int((readLine()?.trimmingCharacters(in: .whitespacesAndNewlines))!)
else { fatalError("Bad input") }
guard let r = Double((readLine()?.trimmingCharacters(in: .whitespacesAndNewlines))!)
else { fatalError("Bad input") }
guard let n = Int((readLine()?.trimmingCharacters(in: .whitespacesAndNewlines))!)
else { fatalError("Bad input") }

var interest:Interest = Simple(p:p,t:t,r:r)
fileHandle.write(String(interest.interest).data(using: .utf8)!)
fileHandle.write("\n".data(using: .utf8)!)
fileHandle.write(String(interest.amount).data(using: .utf8)!)
fileHandle.write("\n".data(using: .utf8)!)

interest = Compound(p:p,t:t,r:r,n:n)
fileHandle.write(String(interest.interest).data(using: .utf8)!)
fileHandle.write("\n".data(using: .utf8)!)
fileHandle.write(String(interest.amount).data(using: .utf8)!)
fileHandle.write("\n".data(using: .utf8)!)

its p * r * Double(t)

thanks a lot :slight_smile: