import kotlin.system.exitProcess
// Conversion functions (all convert *from meters* first)
fun mmToMeters(mm: Double): Double = mm / 1000.0
fun cmToMeters(cm: Double): Double = cm / 100.0
fun kmToMeters(km: Double): Double = km * 1000.0
fun milesToMeters(mi: Double): Double = mi * 1609.34
fun feetToMeters(ft: Double): Double = ft * 0.3048
fun yardsToMeters(yd: Double): Double = yd * 0.9144
fun inchesToMeters(i: Double): Double = i * 0.0254
// Convert meters → all units
fun toMillimeters(m: Double): Double = m * 1000.0
fun toCentimeters(m: Double): Double = m * 100.0
fun toKilometers(m: Double): Double = m / 1000.0
fun toMiles(m: Double): Double = m / 1609.34
fun toFeet(m: Double): Double = m / 0.3048
fun toYards(m: Double): Double = m / 0.9144
fun toInches(m: Double): Double = m / 0.0254
fun main() {
val choice: Int
val value: Double
val meters: Double
println("Choose input unit:")
println("1. Millimeters")
println("2. Centimeters")
println("3. Meters")
println("4. Kilometers")
println("5. Miles")
println("6. Feet")
println("7. Yards")
println("8. Inches")
print("Enter choice: ")
choice = readln().toIntOrNull() ?: 0
print("Enter value: ")
value = readln().toDoubleOrNull() ?: 0.0
// Convert chosen unit → meters
meters = when (choice) {
1 -> mmToMeters(value)
2 -> cmToMeters(value)
3 -> value
4 -> kmToMeters(value)
5 -> milesToMeters(value)
6 -> feetToMeters(value)
7 -> yardsToMeters(value)
8 -> inchesToMeters(value)
else -> {
println("Invalid choice")
exitProcess(0)
}
}
println()
println("Converted from meters (${String.format("%.6f", meters)} m):")
println("Millimeters: ${String.format("%.6f", toMillimeters(meters))}")
println("Centimeters: ${String.format("%.6f", toCentimeters(meters))}")
println("Meters: ${String.format("%.6f", meters)}")
println("Kilometers: ${String.format("%.6f", toKilometers(meters))}")
println("Miles: ${String.format("%.6f", toMiles(meters))}")
println("Feet (Foot): ${String.format("%.6f", toFeet(meters))}")
println("Yards: ${String.format("%.6f", toYards(meters))}")
println("Inches: ${String.format("%.6f", toInches(meters))}")
}
/*
run:
Choose input unit:
1. Millimeters
2. Centimeters
3. Meters
4. Kilometers
5. Miles
6. Feet
7. Yards
8. Inches
Enter choice: 4
Enter value: 1
Converted from meters (1000.000000 m):
Millimeters: 1000000.000000
Centimeters: 100000.000000
Meters: 1000.000000
Kilometers: 1.000000
Miles: 0.621373
Feet (Foot): 3280.839895
Yards: 1093.613298
Inches: 39370.078740
*/