Old Russian measure of length: Difference between revisions

Added Wren
No edit summary
(Added Wren)
Line 1,905:
1.562305
</lang>
 
number>
=={{header|Wren}}==
{{trans|Go}}
{{libheader|Wren-fmt}}
{{libheader|Wren-str}}
<lang ecmascript>import "io" for Stdin, Stdout
import "/fmt" for Fmt
import "/str" for Str
 
var units = [
"tochka", "liniya", "dyuim", "vershok", "piad", "fut",
"arshin", "sazhen", "versta", "milia",
"centimeter", "meter", "kilometer"
]
 
var convs = [
0.0254, 0.254, 2.54, 4.445, 17.78, 30.48,
71.12, 213.36, 10668, 74676,
1, 100, 10000
]
 
while (true) {
var i = 0
for (u in units) {
Fmt.print("$2d $s", i+1, u)
i = i + 1
}
System.print()
var unit
while (true) {
System.write("Please choose a unit 1 to 13 : ")
Stdout.flush()
unit = Num.fromString(Stdin.readLine())
if (unit.type == Num && unit.isInteger && unit >= 1 && unit <= 13) break
}
unit = unit - 1
var value
while (true) {
System.write("Now enter a value in that unit : ")
Stdout.flush()
value = Num.fromString(Stdin.readLine())
if (value.type == Num && value >= 0) break
}
System.print("\nThe equivalent in the remaining units is:\n")
i = 0
for (u in units) {
if (i != unit) Fmt.print(" $10s : $15.8g", u, value*convs[unit]/convs[i])
i = i + 1
}
System.print()
var yn = ""
while (yn != "y" && yn != "n") {
System.write("Do another one y/n : ")
Stdout.flush()
yn = Str.lower(Stdin.readLine())
}
if (yn == "n") break
System.print()
}</lang>
 
{{out}}
Sample run (same as Go example):
<pre>
1 tochka
2 liniya
3 dyuim
4 vershok
5 piad
6 fut
7 arshin
8 sazhen
9 versta
10 milia
11 centimeter
12 meter
13 kilometer
 
Please choose a unit 1 to 13 : 13
Now enter a value in that unit : 1
 
The equivalent in the remaining units is:
 
tochka : 393700.78740157
liniya : 39370.07874016
dyuim : 3937.00787402
vershok : 2249.71878515
piad : 562.42969629
fut : 328.0839895
arshin : 140.60742407
sazhen : 46.86914136
versta : 0.93738283
milia : 0.13391183
centimeter : 10000.0
meter : 100.0
 
Do another one y/n : n
</pre>
9,485

edits