[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Make numbers limited to 0-359 as input or output
- From: dyngeccetor8 <dyngeccetor8@...>
- Date: Fri, 20 Jul 2018 11:16:30 +0300
On 07/20/2018 07:50 AM, Bill Kelsoe wrote:
> Hi, I recently built a sample code for calculating reciprocal winds for
> flight simulation purposes. I want to limit user input to numbers from
> 0-359 inclusive. Nothing like 360 should be entered by user. How can I do
> this?
>
> local line
> repeat
> print("Input wind heading: ");
> line = io.read() -- read a line
> n = tonumber(line) -- try to convert it to a number
> k = tonumber(line)
> k = 180-n
> if n > 180 then
> print("Reciprocal heading is: ",-k)
> elseif n < 180 then
> print("Reciprocal heading is: ", n+180)
> else n = 180
> print ("are you kidding me?")
> end
> print("do you want to convert again? y/n?")
> line = io.read()
> until line ~= "y"
> print("Goodbye")
>
> Also how can I input this into the source code executable to run it? If I
> press enter after the first line it just stops at local line.
>
> Thanks in advance
> Adel
local answer = 'y'
while (answer == 'y') do
io.write('Input wind heading: ')
local s = io.read()
local wind_direction
local n = tonumber(s)
if
not (n and (n >= 0) and (n <= 359) and (math.type(n) == 'integer'))
then
print('are you kidding me?')
else
wind_direction = n
end
if wind_direction then
-- Rotate by 180 deg:
wind_direction = (wind_direction + 180) % 360
print(('Reciprocal heading is: %d'):format(wind_direction))
end
io.write('do you want to convert again? y/n?: ')
answer = io.read()
end
-- Martin