HP Prime: Feet-Inches Calculator
Calculate in
Feet-Inches
The program FTIN is an arithmetic calculator that calculates
in feet-inches and square feet.
At the start of the program, you will be asked to set an
accuracy setting for fractions of inches.
The options available are 1/2, 1/4, 1/8, 1/16, 1/32, and 1/64. You can change accuracy settings at any time.
Then you will be asked to enter a measurement either in feet-inches
(linear) or square feet (area). In feet-inches entry mode, you will enter the
feet, whole inches, and fractional components of inches separately (see screen
shot below).
When the main menu appears, your current result appears in the
title screen of the choose box.
There are eight operations included in FTIN:
1. Add ft-in: Adds a
measurement in feet-inch to the displayed value
2. Subtract ft-in:
Subtracts a measurement in feet-inch from the displayed value
3. Multiply by scalar:
Multiplies measurement by a scalar.
Use this to find the total multiple of a feet-inch measurement.
4. Divide by scalar:
Works similarly to option 3.
5. Multiply to area:
Multiplies two lengths in feet-inch to obtain an area in square
feet.
6. Divide from area: Divides
an area by a length in feet-inch
7. Square Root from area:
Takes the positive square root of a square area. It’s good for a finding a length of a square
given its area.
8. Change accuracy settings:
Change the accuracy settings for fraction of an inch.
Option 9 is to exit the program.
HP Prime Program
FTIN
sub1();
sub2();
EXPORT FTIN()
BEGIN
// 2018-06-21 EWS
// initialization
LOCAL fx,fy,fz,ch;
LOCAL lx,ly,lz,Y,S;
LOCAL aflag,str,dh;
INPUT({{Y,
{2,4,8,16,32,64}}},
"ACCURACY
DESIRED","/");
Y:=2^Y;
// initial entry
CHOOSE(dh,"Initial Units",
{"ft-in","ft^2"});
IF dh==1 THEN
fx:=sub1();
fz:=fx;
aflag:=0;
ELSE
INPUT(fx,"Enter
Area","ft^2:");
fz:=fx;
aflag:=1;
END;
WHILE ch≠9 DO
fx:=fz;
// string for fz
IF aflag==0 THEN
lx:=sub2(fx,Y);
str:=STRING(lx(1))+" ft "+
STRING(lx(2))+" "+
STRING(lx(3))+" in";
ELSE
str:=STRING(fx)+" ft^2";
END;
CHOOSE(ch,str,
{"Add ft-in",
"Subtract ft-in",
"Multiply by scalar",
"Divide by scalar",
"Multiply to area",
"Divide from area",
"Square Root from area",
"Change accuracy settings",
"Quit"});
// add ft-in
IF ch==1 THEN
fy:=sub1();
fz:=fx+fy;
lx:=sub2(fx,Y);
ly:=sub2(fy,Y);
lz:=sub2(fz,Y);
PRINT();
PRINT(lx(1)+" ft "+lx(2)+
" "+lx(3)+"
in");
PRINT("+");
PRINT(ly(1)+" ft "+ly(2)+
" "+ly(3)+"
in");
PRINT("=");
PRINT(lz(1)+" ft "+lz(2)+
" "+lz(3)+"
in");
WAIT(0);
END;
// subtract ft-in
IF ch==2 THEN
fy:=sub1();
fz:=fx-fy;
lx:=sub2(fx,Y);
ly:=sub2(fy,Y);
lz:=sub2(fz,Y);
PRINT();
PRINT(lx(1)+" ft "+lx(2)+
" "+lx(3)+"
in");
PRINT("-");
PRINT(ly(1)+" ft "+ly(2)+
" "+ly(3)+"
in");
PRINT("=");
PRINT(lz(1)+" ft "+lz(2)+
" "+lz(3)+"
in");
WAIT(0);
END;
// multiply by scalar
IF ch==3 THEN
INPUT(S,"Enter Scalar");
fz:=fx*S;
lx:=sub2(fx,Y);
lz:=sub2(fz,Y);
PRINT();
PRINT(lx(1)+" ft "+lx(2)+
" "+lx(3)+"
in");
PRINT("*");
PRINT(S);
PRINT("=");
PRINT(lz(1)+" ft "+lz(2)+
" "+lz(3)+"
in");
WAIT(0);
END;
// divide by scalar
IF ch==4 THEN
INPUT(S,"Enter Scalar");
fz:=fx/S;
lx:=sub2(fx,Y);
lz:=sub2(fz,Y);
PRINT();
PRINT(lx(1)+" ft "+lx(2)+
" "+lx(3)+"
in");
PRINT("/");
PRINT(S);
PRINT("=");
PRINT(lz(1)+" ft "+lz(2)+
" "+lz(3)+"
in");
WAIT(0);
END;
// multiply to area
IF ch==5 THEN
fy:=sub1();
fz:=fx*fy;
fz:=ROUND(fz,6);
lx:=sub2(fx,Y);
ly:=sub2(fy,Y);
aflag:=1;
PRINT();
PRINT(lx(1)+" ft "+lx(2)+
" "+lx(3)+"
in");
PRINT("*");
PRINT(ly(1)+" ft "+ly(2)+
" "+ly(3)+"
in");
PRINT("=");
PRINT(fz+" ft^2");
WAIT(0);
END;
// divide from area
IF ch==6 THEN
fy:=sub1();
fz:=fx/fy;
ly:=sub2(fy,Y);
lz:=sub2(fz,Y);
aflag:=0;
PRINT();
PRINT(fx+" ft^2");
PRINT("/");
PRINT(ly(1)+" ft "+ly(2)+
" "+ly(3)+"
in");
PRINT("=");
PRINT(lz(1)+" ft "+lz(2)+
" "+lz(3)+"
in");
WAIT(0);
END;
// square root from area
IF ch==7 THEN
fz:=√(fx);
lz:=sub2(fz,Y);
aflag:=0;
PRINT();
PRINT("√"+fx+"
ft^2");
PRINT("=");
PRINT(lz(1)+" ft "+lz(2)+
" "+lz(3)+"
in");
WAIT(0);
END;
// change accruacy settings
IF ch==8 THEN
INPUT({{Y,
{2,4,8,16,32,64}}},
"ACCURACY
DESIRED","/");
Y:=2^Y;
END;
END;
END;
// feet-inch-fraction entry
sub1()
BEGIN
LOCAL f,i,s,n;
INPUT({f,i,s,{n,
{2,4,8,16,32,64}}},
"ENTRY",
{"Feet: ","Inch:
",
"Frac: ","/"});
RETURN f+(i+s/(2^n))/12;
END;
// convert to feet-inch
sub2(x,y)
BEGIN
LOCAL f,i,s,t;
f:=IP(x);
i:=IP(FP(x)*12);
s:=ROUND(FP(FP(x)*12)*y,0);
t:=QPI(s/y);
RETURN {f,i,t};
END;
Eddie
All original
content copyright, © 2011-2018. Edward
Shore. Unauthorized use and/or
unauthorized distribution for commercial purposes without express and written
permission from the author is strictly prohibited. This blog entry may be distributed for
noncommercial purposes, provided that full credit is given to the author. Please contact the author if you have
questions.