Advertisement
Guest User

Untitled

a guest
Nov 19th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ada 1.21 KB | None | 0 0
  1. with Ada.Text_IO, Ada.Numerics.Discrete_Random, Ada.Numerics.Float_Random;
  2. use Ada.Text_IO, Ada.Numerics;
  3.  
  4. procedure Zad1 is
  5.  
  6. type Color is (red, green, blue);
  7.  
  8. task My_Generator is
  9.   entry compose;
  10.   entry generate_float(o: out Float);
  11.   entry generate_color(o: out Color);
  12.   entry perish;
  13. end My_Generator;
  14.  
  15. task body My_Generator is
  16.   package Color_Random is new Ada.Numerics.Discrete_Random(Color);
  17.  
  18.   float_gen: Float_Random.Generator;
  19.   color_gen: Color_Random.Generator;
  20. begin
  21.   accept compose;
  22.   Float_Random.reset(float_gen);
  23.   Color_Random.reset(color_gen);
  24.   loop
  25.     select
  26.       accept generate_float(o: out Float) do
  27.         o := Float_Random.random(float_gen) * 5.0;
  28.       end generate_float;
  29.     or
  30.       accept generate_color(o: out Color) do
  31.         o := Color_Random.random(color_gen);
  32.       end generate_color;
  33.     or
  34.       accept perish;
  35.       exit;
  36.     end select;
  37.   end loop;
  38. end My_Generator;
  39.  
  40. x: Float;
  41. c: Color;
  42. begin
  43.   My_Generator.compose;
  44.   for K in 1..10 loop
  45.     My_Generator.generate_float(x);
  46.     put_line(x'Img);
  47.   end loop;
  48.   for K in 1..10 loop
  49.     My_Generator.generate_color(c);
  50.     put_line(c'Img);
  51.   end loop;
  52.   My_Generator.perish;
  53. end Zad1;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement