import kotlin.math.PI
import kotlin.math.sqrt
// 1. Площадь прямоугольника (по умолчанию — квадрат)
fun rectangleArea(width: Double, height: Double = width): Double {
return width * height
}
// 2. Площадь круга (с параметром pi по умолчанию)
fun circleArea(radius: Double, pi: Double = PI): Double {
return pi * radius * radius
}
// 3. Площадь треугольника по формуле Герона
fun triangleArea(a: Double, b: Double, c: Double): Double {
val p = (a + b + c) / 2
return sqrt(p * (p - a) * (p - b) * (p - c))
}
// 4. Периметр многоугольника (сумма всех сторон)
fun totalPerimeter(vararg sides: Double): Double {
return sides.sum()
}
fun main() {
println("=== Прямоугольник ===")
// Без именованных аргументов
println("Площадь прямоугольника 4x5: ${rectangleArea(4.0, 5.0)}")
// С именованными аргументами
println("Площадь квадрата 3x3: ${rectangleArea(width = 3.0)}")
println("Площадь квадрата 4x4: ${rectangleArea(width = 4.0, height = 4.0)}")
println("\n=== Круг ===")
// Без именованных аргументов
println("Площадь круга радиусом 3 (π=3.14159): ${circleArea(3.0)}")
// С именованными аргументами
println("Площадь круга радиусом 2 (π≈3.14): ${circleArea(radius = 2.0, pi = 3.14)}")
println("Площадь круга радиусом 5 (точное значение): ${circleArea(radius = 5.0)}")
println("\n=== Треугольник ===")
// Без именованных аргументов
println("Площадь треугольника со сторонами 3,4,5: ${triangleArea(3.0, 4.0, 5.0)}")
// С именованными аргументами
println("Площадь треугольника со сторонами 6,8,10: ${triangleArea(a = 6.0, b = 8.0, c = 10.0)}")
println("Площадь треугольника со сторонами 5,5,6: ${triangleArea(a = 5.0, b = 5.0, c = 6.0)}")
println("\n=== Периметр многоугольника ===")
// Без именованных аргументов
println("Периметр треугольника 3+4+5 = ${totalPerimeter(3.0, 4.0, 5.0)}")
// С именованными аргументами (vararg нельзя именовать, передаём значения)
println("Периметр четырёхугольника 2+3+4+5 = ${totalPerimeter(2.0, 3.0, 4.0, 5.0)}")
println("Периметр пятиугольника 1+2+3+4+5 = ${totalPerimeter(1.0, 2.0, 3.0, 4.0, 5.0)}")
}