PROGRAM 28
PROGRAM USE_CONVERT; {ANTHONY F. ORTIZ, ASSIGNMENT 11A, JULY 26, 1994} {THIS PROGRAM IS A MENU DRIVEN PROGRAM THAT ALLOWS THE USER TO CHOOSE FROM DIFFERENT CONVERSION OPTIONS.} USES CRT, CONVERT; 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. UNIT CONVERT; INTERFACE USES CRT; PROCEDURE CONVERTWEIGHTS; {ANTHONY F. ORTIZ, ASSIGNMENT 11A, JULY 14, 1994} Procedure Convertdistances; {Anthony F. Ortiz, Assignment 11a, July 14, 1994} PROCEDURE CONVERTTEMPERATURES; {ANTHONY F. ORTIZ, ASSIGNMENT 11A, JULY 14, 1994} IMPLEMENTATION PROCEDURE CONVERTWEIGHTS; {ANTHONY F. ORTIZ, ASIGNMENT 11A, JULY 14, 1994} 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 11b, 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; {ANTHONY F. ORTIZ, ASSIGNMENT 11BA, 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; BEGIN END. { OUTFILE: PROG28.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.