How to calculate the area, diameter, and circumference of a circle in Swift

2 Answers

0 votes
import Foundation

let radius = 3.0
let PI = 3.14

let area = PI * radius * radius
print(String(format: "Area = %.2f", area))

let diameter = 2 * radius
print(String(format: "Diameter = %.2f", diameter))

let circumference = 2 * PI * radius
print(String(format: "Circumference = %.2f", circumference))



/*
run:
   
Area = 28.26
Diameter = 6.00
Circumference = 18.84
            
*/

 



answered Oct 18, 2024 by avibootz
0 votes
import Foundation

/// An enumeration representing errors that can occur during circle calculations.
enum CircleError: LocalizedError {
    case negativeRadius
    
    var errorDescription: String? {
        switch self {
        case .negativeRadius:
            return "Radius cannot be negative."
        }
    }
}

/// A structure to hold the calculated geometric metrics of a circle.
struct CircleMetrics {
    let diameter: Double
    let circumference: Double
    let area: Double
}

/**
 Calculates the diameter, circumference, and area of a circle.
 
 - Parameter radius: The radius of the circle (must be non-negative).
 - Returns: A `CircleMetrics` instance containing the calculated results.
 - Throws: `CircleError.negativeRadius` if the radius is less than zero.
 */
func calculateCircleMetrics(radius: Double) throws -> CircleMetrics {
    // Guard clause: radius cannot be negative
    guard radius >= 0 else {
        throw CircleError.negativeRadius
    }
    
    let diameter = 2.0 * radius
    let circumference = 2.0 * Double.pi * radius
    
    // Standard multiplication (radius * radius) is more efficient than pow(radius, 2)
    let area = Double.pi * (radius * radius)
    
    return CircleMetrics(diameter: diameter, circumference: circumference, area: area)
}

// --- Example Usage ---
do {
    let radius: Double = 3.0
    
    // Retrieve calculated metrics
    let metrics = try calculateCircleMetrics(radius: radius)
    
    // Output results formatted to 2 decimal places
    print("Radius: \(radius)")
    print("Diameter: \(metrics.diameter)")
    print(String(format: "Circumference: %.2f", metrics.circumference))
    print(String(format: "Area: %.2f", metrics.area))
} 
catch {
    print("Error: \(error.localizedDescription)")
}


/*
run:

Radius: 3.0
Diameter: 6.0
Circumference: 18.85
Area: 28.27

*/

 



answered 3 hours ago by avibootz

Related questions

...