CNV: A Function to Convert Units
07-22-2017, 10:28 PM (This post was last modified: 07-23-2017 12:37 AM by Skyblues.)
Post: #5
 Skyblues Member Posts: 73 Joined: Jun 2015
RE: CNV: A Function to Convert Units
This is my first attempt to expand on epp's "CNV: A Function to Convert Units" program.

All the unit conversions seem to be working except Speed.
The only units that work in Speed are kph, mph and knot; the rest are creating "Error: Syntax Error".

It doesn't seem to like anything with a "/" in the name and I can't find the problem.

So I guess the question is, how do I get the code to accept a name with a "/" in it?
I've been reading through the code to try to figure why m/s (for example) isn't being accepted although it's a valid unit in the Prime.

Is there an IDE one can use to step through the code?

Edit:
In case anyone's interested, I discovered that anything with a "/" in it, must be enclosed in parentheses. I've tried out most of the unit conversions and they work. If anyone finds an error, please let me know.

I edited my original code with my update. I find it very useful. Thanks for the original code, epp!

Code:
#pragma mode(separator(.,;) integer(h32)) // when changing menus update the following: cFr, cTo, unit, prog cFr = {1,1,1,1,1,1,1,1,1,1,1,1,1}; cTo = {1,1,1,1,1,1,1,1,1,1,1,1,1}; iPr; EXPORT Units(x) begin   local unit = {     {"m", "cm", "mm", "km", "yd", "ft", "inch", "mile"},     {"m^2", "cm^2", "km^2", "yd^2", "ft^2", "inch^2", "mile^2", "acre"},     {"m^3", "cm^3", "l", "ml", "yd^3", "ft^3", "inch^3", "galUS", "ozfl", "qt", "liqpt", "cu", "tbsp", "tsp"},     {"yr", "d", "h", "min", "s"},     {"(m/s)", "(cm/s)", "(ft/s)", "kph", "mph", "knot", "(rad/s)", "(tr/min)", "(tr/s)"},     {"kg", "g", "lb", "oz", "ozt", "grain", "ct"},     {"(m/s^2)", "(ft/s^2)", "grav",  "(rad/s^2)"},     {"(kg*m/s^2)", "N", "dyn", "lbf", "kip", "gf", "pdl"},     {"(kg*m^2/s^2)", "J", "Wh", "ft*lbf", "kcal", "cal", "Btu", "erg", "thermUS"},     {"(kg*m^2/s^3)", "W", "MW", "hp", "ft*lbf/s"},     {"(kg/(m*s^2))", "Pa", "bar", "atm", "psi", "torr", "mmHg", "inHg", "inH2O"},     {"°C", "°F", "K", "Rankine"},     {"rad", "deg", "grad", "arcmin", "arcs", "tr"}   };   local prog = {     "Length",     "Area",     "Volume",     "Time",     "Speed",     "Mass",     "Acceleration",     "Force",     "Energy",     "Power",     "Pressure",     "Temperature",     "Angle"   };   local t = type(x);   local x0 = x;   local uFr, uTo, n;   if (t <> 0) and (t <> 9) then msgbox("Input must be REAL or UNIT"); return x0; end;   choose(iPr, "convert", prog);   if (iPr == 0) then return x0; end;   if (t == 0) then     n := cFr[iPr];     choose(n, "From", unit[iPr]);     if (n == 0) then return x0; end;     uFr := expr("1_" + unit[iPr,n]);     x := x * uFr;     cFr[iPr] := n;   end;   n := cTo[iPr];   choose(n, "To", unit[iPr]);   if (n == 0) then return x0; end;   uTo := expr("1_" + unit[iPr,n]);   x := convert(x, uTo);   cTo[iPr] := n;   if (t == 0) then x := x / uTo; else x; end; end;
 « Next Oldest | Next Newest »

 Messages In This Thread CNV: A Function to Convert Units - epp - 10-27-2015, 08:34 PM RE: CNV: A Function to Convert Units - StephenG1CMZ - 10-30-2015, 08:58 AM RE: CNV: A Function to Convert Units - Skyblues - 07-17-2017, 05:53 AM RE: CNV: A Function to Convert Units - Skyblues - 07-22-2017, 06:15 AM RE: CNV: A Function to Convert Units - Skyblues - 07-22-2017 10:28 PM RE: CNV: A Function to Convert Units - Skyblues - 08-12-2017, 02:24 AM RE: CNV: A Function to Convert Units - hp48g - 10-24-2018, 01:37 PM RE: CNV: A Function to Convert Units - dino9832 - 10-03-2023, 03:26 AM

User(s) browsing this thread: 1 Guest(s)