with ada.text_io; use ada.text_it; with ada.integer_text_io; use ada.integer_text_io; with ada.float_text_io; use ada.float_text_io; procedure g1 is -- This procedure will print one line of the solution procedure putline(s: String; i, n: natural) is -- A local variable for the procedure avg: constant float := float(i) / float(n); begin put(s); set_col(10); -- Move to the correct column put(i); put(" "); put(avg, fore => 4, aft => 1, exp => 0); put("%"); new_line; end putline; rlo, rhi: Integer; -- Range lo and hi total, lo, eq, hi: Natural := 0; -- counts for total, below, in, above set num: Integer; -- Input number begin -- Input the range values get(rlo); get(rhi); -- Sort range values into nondescending order if rlo > rhi then declare -- Declare a variable t: Integer := rlo; begin rlo := rhi; rhi := t; end; end if; -- Get the values while not end_of_file loop -- Get the number get(num); -- Count the number total := total + 1; -- Classify the number if num < rlo then lo := lo + 1; elsif num <= rhi then eq := eq + 1; else -- num > rhi hi := hi + 1; end if; end loop; -- Display results putline("Less", lo, total); putline("In", eq, total); putline("Greater", hi, total); putline("total", total, total); end g1;