!
PROGRAM P55
!
IMPLICIT NONE
CHARACTER (LEN=3) :: MONTH(12)
CHARACTER (LEN=1) :: S(30)
INTEGER :: I,K,JJ,UNITS(12)
REAL :: SALES(12)
!
!
PRINT *, 'This is Program >> P55 - Print a simple Histogram'
!
! Tell program where data for READ is coming from
OPEN(UNIT=5, FILE='P55.DAT') ! UNIT=5 is the default input
!
!
L1: DO I=1, 12
READ 15,MONTH(I),UNITS(I),SALES(I)
END DO L1
15 FORMAT(A3,I7,F5.1)
!
L2: DO I=1,30
S(I)='*'
END DO L2
!
PRINT 100
100 FORMAT('1MONTH UNITS SOLD'/)
L3: DO I=1,12
JJ=(UNITS(I)-590)/10
PRINT 30,MONTH(I),(S(K),K=1,JJ)
30 FORMAT(' ',A3,' ',30A1)
END DO L3
!
PRINT 101
101 FORMAT(/' MONTH SALES'/)
L4: DO I=1,12
JJ=SALES(I)*5
PRINT 30,MONTH(I),(S(K),K=1,JJ)
END DO L4
!
STOP
END PROGRAM P55
DATA:
JAN 672 3.4 FEB 609 3.2 MAR 715 3.7 APR 803 4.2 MAY 810 4.8 JUN 831 5.1 JUL 829 5.1 AUG 727 5.1 SEP 780 4.3 OCT 703 3.9 NOV 791 4.2 DEC 783 3.6OUTPUT:
+--------------------------------------------------+
| 32-bit Power for Lahey Computer Systems |
| Phar Lap's 386|DOS-Extender(tm) Version 7.0 |
| Copyright (C) 1986-94 Phar Lap Software, Inc. |
| Available Memory = 14880 Kb |
+--------------------------------------------------+
This is Program >> P55 - Print a simple Histogram
MONTH UNITS SOLD
JAN ********
FEB *
MAR ************
APR *********************
MAY **********************
JUN ************************
JUL ***********************
AUG *************
SEP *******************
OCT ***********
NOV ********************
DEC *******************
MONTH SALES
JAN *****************
FEB ****************
MAR ******************
APR ********************
MAY ************************
JUN *************************
JUL *************************
AUG *************************
SEP *********************
OCT *******************
NOV ********************
DEC *****************
{$G256}
{$P512}
{$D+}
PROGRAM p55 (input, output);
VAR
month : ARRAY[1..12] OF string[3];
s : ARRAY[1..30] OF STRING[1];
units : ARRAY[1..12] OF INTEGER;
sales : ARRAY[1..12] OF REAL;
i, jj, k : INTEGER;
BEGIN
FOR i := 1 TO 12 DO
readln ( month[i], units[i], sales[i] );
FOR i := 1 TO 30 DO
s[i] := '*';
writeln ( ^l );
writeln ( 'month units sold' );
FOR i := 1 TO 12 DO
BEGIN
jj := (units[i] - 590) DIV 10;
write ( ' ':2, month[i], ' ':2 );
FOR k := 1 TO jj DO
write ( s[k] );
writeln
END; { end for }
writeln ( ^l );
writeln ( 'month sales' );
FOR i := 1 TO 12 DO
BEGIN
jj := trunc (sales[i] * 5.0);
write ( ' ':2, month[i], ' ':2 );
FOR k := 1 TO jj DO
write ( s[k] );
writeln
END { end for }
END.
DATA:
jan 672 3.4 feb 609 3.2 mar 715 3.7 apr 803 4.2 may 810 4.8 jun 831 5.1 jul 829 5.1 aug 727 5.1 sep 780 4.3 oct 703 3.9 nov 791 4.2 dec 783 3.6
Last modified: 08/07/97