PROGRAM 20
PROGRAM CONVERSIONS;
{ANTHONY F. ORTIZ, ASSIGNMENT 6E, JULY 14, 1994}
{THIS PROGRAM IS A MENU DRIVEN PROGRAM THAT ALLOWS THE USER TO
CHOOSE SEVERAL DIFFERENT CONVERSION OPTIONS.}
USES CRT;
PROCEDURE CONVERTWEIGHTS;
VAR
CH: CHAR;
DONE: BOOLEAN;
AMOUNT, CONVERSION: REAL;
PROCEDURE MENU;
BEGIN
WRITELN ('CHOOSE ONE OF THE OPTIONS BELOW: ');
WRITELN;
WRITELN (' A. CONVERT OUNCES TO GRAMS.');
WRITELN (' B. CONVERT POUNDS TO KILOGRAMS. ');
WRITELN (' C. CONVERT GRAMS TO OUNCES. ');
WRITELN (' D. CONVERT KILOGRAMS TO POUNDS. ');
WRITELN (' E. QUIT.');
WRITELN;
WRITE ('ENTER THE LETTER OF YOUR CHOICE. ');
REPEAT
READLN (CH);
UNTIL CH IN ['A'..'E', 'a'..'e'];
DONE := CH IN ['E', 'e'];
END;
PROCEDURE INPUTDATA;
BEGIN
WRITE ('ENTER THE NUMBER OF OUNCES. ');
READLN (AMOUNT);
WRITELN;
END;
PROCEDURE INPUTDATA2;
BEGIN
WRITE ('ENTER THE NUMBER OF POUNDS. ');
READLN (AMOUNT);
WRITELN;
END;
PROCEDURE INPUTDATA3;
BEGIN
WRITE ('ENTER THE NUMBER OF GRAMS. ');
READLN (AMOUNT);
WRITELN;
END;
PROCEDURE INPUTDATA4;
BEGIN
WRITE ('ENTER THE NUMBER OF KILOGRAMS. ');
READLN (AMOUNT);
WRITELN;
END;
PROCEDURE PROCESSDATA;
BEGIN
CONVERSION := AMOUNT * 28.35;
END;
PROCEDURE PROCESSDATA2;
BEGIN
CONVERSION := AMOUNT * 0.454;
END;
PROCEDURE PROCESSDATA3;
BEGIN
CONVERSION := AMOUNT * 0.035;
END;
PROCEDURE PROCESSDATA4;
BEGIN
CONVERSION := AMOUNT * 2.21;
END;
PROCEDURE PRINTRESULTS;
BEGIN
WRITELN ('THERE ARE ', CONVERSION:1:2, ' GRAMS IN ', AMOUNT:1:2, ' OUNCES. ');
WRITELN;
END;
PROCEDURE PRINTRESULTS2;
BEGIN
WRITELN ('THERE ARE ', CONVERSION:1:2, ' KILOGRAMS IN ', AMOUNT:1:2, ' POUNDS. ');
WRITELN;
END;
PROCEDURE PRINTRESULTS3;
BEGIN
WRITELN ('THERE ARE ', CONVERSION:1:2, ' OUNCES IN ', AMOUNT:1:2, ' GRAMS. ');
WRITELN;
END;
PROCEDURE PRINTRESULTS4;
BEGIN
WRITELN ('THERE ARE ', CONVERSION:1:2, ' POUNDS IN ', AMOUNT:1:2, ' KILOGRAMS. ');
WRITELN;
END;
PROCEDURE PAUSE;
BEGIN
WRITE ('PRESS ENTER TO RETURN TO THE MENU. ');
READLN;
END;
PROCEDURE CONVERTOUNCESTOGRAMS;
BEGIN
CLRSCR;
INPUTDATA;
PROCESSDATA;
PRINTRESULTS;
PAUSE;
END;
PROCEDURE CONVERTPOUNDSTOKILOGRAMS;
BEGIN
CLRSCR;
INPUTDATA2;
PROCESSDATA2;
PRINTRESULTS2;
PAUSE;
END;
PROCEDURE CONVERTGRAMSTOOUNCES;
BEGIN
CLRSCR;
INPUTDATA3;
PROCESSDATA3;
PRINTRESULTS3;
PAUSE;
END;
PROCEDURE CONVERTKILOGRAMSTOPOUNDS;
BEGIN
CLRSCR;
INPUTDATA4;
PROCESSDATA4;
PRINTRESULTS4;
PAUSE;
END;
PROCEDURE QUIT;
BEGIN
DONE := TRUE;
END;
BEGIN
REPEAT
CLRSCR;
MENU;
CASE CH OF
'A', 'a': CONVERTOUNCESTOGRAMS;
'B', 'b': CONVERTPOUNDSTOKILOGRAMS;
'C', 'c': CONVERTGRAMSTOOUNCES;
'D', 'd': CONVERTKILOGRAMSTOPOUNDS;
'E', 'e': QUIT;
END;
UNTIL DONE;
END;
Procedure Convertdistances;
{Anthony F. Ortiz, Assignment 6e, July 14, 1994}
Var
done: boolean;
ans : char;
Procedure Pause;
Begin
Write ('Press enter key to continue. ');
Readln;
End;
Procedure in_cm;
Var
inches, cm : real;
Begin
writeln;
write ('Enter the number of inches: ');
readln (inches);
cm := inches * 2.54;
writeln;
writeln (inches:8:2, ' inches = ', cm:8:2, ' centimeters.');
writeln;
pause;
End;
Procedure cm_in;
Var
feet : integer;
cm,inches : real;
Begin
writeln;
write ('Enter the number of centimeters: ');
readln (cm);
inches := 1 / 2.54 * cm;
writeln;
if inches > 12 then
begin
feet := trunc (inches / 12);
inches := inches - 12 * feet;
writeln (cm:8:2, ' centimeters = ', feet, ' feet',inches:8:2, ' inches.');
writeln;
end
else
begin
writeln (cm:8:2, ' centimeters = ', inches:8:2, ' inches.');
writeln;
end;
pause
End;
Procedure ft_m;
Var
ft,m : real;
Begin
writeln;
write ('Enter the number of feet: ');
readln (ft);
m := 1 / 3.28 * ft;
writeln;
writeln (ft:8:2, ' feet = ', m:8:2, ' meters.');
writeln;
pause;
End;
Procedure m_ft;
Var
ft, m : real;
Begin
writeln;
write ('Enter the number of meters: ');
readln (m);
ft := 3.28 * m;
writeln;
writeln (m:8:2, ' meters = ', ft:8:2, ' feet.');
writeln;
pause;
End;
Procedure menu2 (Var ans : char);
Begin
writeln;
writeln ('Menu');
writeln;
writeln ('*-MENU-MENU-MENU-MENU-MENU-MENU-MENU-*');
writeln ('[ ]');
writeln ('[ A) Convert inches to centimeters. ]');
writeln ('[ B) Convert feet to meters. ]');
writeln ('[ C) Convert centimeters to inches. ]');
writeln ('[ D) Convert meters to feet. ]');
writeln ('[ Q) Quit. ]');
writeln ('[ ]');
writeln ('*-MENU-MENU-MENU-MENU-MENU-MENU-MENU-*');
repeat
writeln;
write ('Please enter your choice (A,B,C,D,Q): ');
readln (ans);
if NOT (upcase(ans) IN ['A','B','C','D','Q']) then
begin
writeln;
writeln ('Please enter ''A'',''B'',''C'',''D'' or ''Q'' only !');
pause;
end
until upcase (ans) IN ['A','B','C','D','Q'];
Clrscr;
End;
Begin
done := false;
repeat
Clrscr;
menu2 (ans);
case upcase (ans) of
'A' : in_cm;
'B' : ft_m;
'C' : cm_in;
'D' : m_ft
else
begin
done := upcase(ans) = 'Q';
writeln;
writeln ('Thank you, Bye Bye !');
end;
end;
until done;
end;
PROCEDURE CONVERTTEMPERATURES;
{ASSIGNMENT 6E, ANTHONY F. ORTIZ, JULY 14, 1994}
VAR
DONE: BOOLEAN;
CH: CHAR;
AMOUNT, CONVERSION: REAL;
PROCEDURE PAUSE;
BEGIN
WRITE ('PRESS ENTER KEY TO CONTINUE. ');
READLN;
END;
PROCEDURE QUIT;
BEGIN
DONE := TRUE;
END;
PROCEDURE MENU3;
BEGIN
WRITELN ('CHOOSE ONE OF THE OPTIONS BELOW: ');
WRITELN;
WRITELN (' A. CONVERT CENTIGRADE TO FAHRENHEIT. ');
WRITELN (' B. CONVERT FAHRENHEIT TO CENTIGRADE. ');
WRITELN (' C. QUIT. ');
WRITELN;
WRITE ('ENTER THE LETTER OF YOUR CHOICE. ');
REPEAT
READLN (CH);
UNTIL CH IN ['A'..'C', 'a'..'c'];
DONE := CH IN ['E', 'e'];
END;
PROCEDURE INPUTDATA5;
BEGIN
WRITE ('ENTER TEMPERATURE IN CENTIGRADE. ');
READLN (AMOUNT);
WRITELN;
END;
PROCEDURE INPUTDATA6;
BEGIN
WRITE ('ENTER TEMPERATURE IN FAHRENHEIT. ');
READLN (AMOUNT);
WRITELN;
END;
PROCEDURE PROCESSDATA5;
BEGIN
CONVERSION := 9 / 5 * AMOUNT + 32;
END;
PROCEDURE PROCESSDATA6;
BEGIN
CONVERSION := 5 / 9 * (AMOUNT - 32);
END;
PROCEDURE PRINTRESULTS5;
BEGIN
WRITELN (AMOUNT:1:2, ' CENTIGRADE IS EQUAL TO ', CONVERSION:1:2, ' FAHRENHEIT.');
WRITELN;
END;
PROCEDURE PRINTRESULTS6;
BEGIN
WRITELN (AMOUNT:1:2, ' FAHRENHEIT IS EQUAL TO ', CONVERSION:1:2, ' CENTIGRADE.');
WRITELN;
END;
PROCEDURE CONVERTCENTIGRADETOFAHRENHEIT;
BEGIN
CLRSCR;
INPUTDATA5;
PROCESSDATA5;
PRINTRESULTS5;
PAUSE;
END;
PROCEDURE CONVERTFAHRENHEITTOCENTIGRADE;
BEGIN
CLRSCR;
INPUTDATA6;
PROCESSDATA6;
PRINTRESULTS6;
PAUSE;
END;
BEGIN
REPEAT
CLRSCR;
MENU3;
CASE CH OF
'A', 'a': CONVERTCENTIGRADETOFAHRENHEIT;
'B', 'b': CONVERTFAHRENHEITTOCENTIGRADE;
'C', 'c': QUIT;
END;
UNTIL DONE
END;
VAR
DONE2: BOOLEAN;
CH: CHAR;
PROCEDURE QUIT;
BEGIN
DONE2 := TRUE;
END;
PROCEDURE MENU4;
BEGIN
WRITELN ('CHOOSE ONE OF THE OPTIONS BELOW: ');
WRITELN;
WRITELN (' A. CONVERT DISTANCE MENU. ');
WRITELN (' B. CONVERT WEIGHTS MENU. ');
WRITELN (' C. CONVERT TEMPERATURE MENU. ');
WRITELN (' D. QUIT. ');
WRITELN;
WRITE ('ENTER THE LETTER OF YOUR CHOICE. ');
REPEAT
READLN (CH);
UNTIL CH IN ['A'..'D', 'a'..'d'];
DONE2 := CH IN ['D', 'd'];
END;
BEGIN
REPEAT
CLRSCR;
MENU4;
CASE CH OF
'A', 'a': CONVERTDISTANCES;
'B', 'b': CONVERTWEIGHTS;
'C', 'c': CONVERTTEMPERATURES;
'D', 'd': QUIT;
END;
UNTIL DONE2;
END.
{ OUTFILE: PROG20.OUT }
CHOOSE ONE OF THE OPTIONS BELOW:
A. CONVERT DISTANCE MENU.
B. CONVERT WEIGHTS MENU.
C. CONVERT TEMPERATURE MENU.
D. QUIT.
ENTER THE LETTER OF YOUR CHOICE. a
Menu
*-MENU-MENU-MENU-MENU-MENU-MENU-MENU-*
[ ]
[ A) Convert inches to centimeters. ]
[ B) Convert feet to meters. ]
[ C) Convert centimeters to inches. ]
[ D) Convert meters to feet. ]
[ Q) Quit. ]
[ ]
*-MENU-MENU-MENU-MENU-MENU-MENU-MENU-*
Please enter your choice (A,B,C,D,Q): a
Enter the number of inches: 10
10.00 inches = 25.40 centimeters.
PRESS ENTER KEY TO CONTINUE.
BACK TO COMP151 PAGE.