with ada.text_io; use ada.text_io;
with ada.integer_text_io; use ada.integer_text_io;
with ada.numerics.discrete_random;
procedure linelist is
type point is record
x, y: Integer;
end record;
type line is record
p1, p2: Point;
end record;
Max_Lines: Constant Natural := 100;
type Line_Array is array(1 .. Max_Lines) of Line;
type List is record
-- theLines: array(1 .. Max_Lines) of Line; -- Compile error
theLines: Line_Array;
len: Natural := 0;
end record;
-- Use input to fill up the list
procedure get_list(l: out list) is
begin
-- Fix the compile error!
while not end_of_file loop
get(l.thelines(i).p1.x);
get(l.thelines(i).p1.y);
get(l.thelines(i).p2.x);
get(l.thelines(i).p2.y);
l.len := l.len + 1;
end loop;
end get_list;
-- Fill up the list using random numbers
procedure random_fill_list(l: out list) is
-- Create and use a new package to create random integers
package randomintpkg is new ada.numerics.discrete_random(Integer);
use randomintpkg;
size: Integer; -- number of lines to fill
g: generator; -- Random number generator
begin
-- input the number of lines to fill
get(size);
-- input size lines
for i in 1 .. size loop
l.thelines(i).p1.x := random(g);
l.thelines(i).p1.y := random(g);
l.thelines(i).p2.x := random(g);
l.thelines(i).p2.y := random(g);
end loop;
-- The list must store the number of valid elements
l.len := size;
end random_fill_list;
-- Output the list of lines
procedure print_list(l: in list) is
begin
-- The loop and the put need to be finished
-- for i in 1 .. ??? loop
-- put(l);
new_line;
-- end loop;
end print_list;
theList: list;
begin
-- Select on of the two ways to fill up the list: random or with input
-- get_list(theList);
random_fill_list(theList);
print_list(theList);
end linelist;