Advertisement
Guest User

Untitled

a guest
Oct 17th, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.97 KB | None | 0 0
  1. with Ada.Text_IO, Ada.Integer_Text_IO, Ada.Numerics.Discrete_Random;
  2. use Ada.Text_IO, Ada.Integer_Text_IO;
  3.  
  4. procedure Lab4Lista is
  5.  
  6. type Element is
  7. record
  8. Data : Integer := 0;
  9. Next : access Element := Null;
  10.  
  11. end record;
  12.  
  13. type Elem_Ptr is access all Element;
  14.  
  15. procedure Print(List : access Element) is
  16. L : access Element := List;
  17. begin
  18. if List = Null then
  19. Put_Line("List EMPTY!");
  20. else
  21. Put_Line("List:");
  22. end if;
  23. while L /= Null loop
  24. Put(L.Data, 4); -- z pakietu Ada.Integer_Text_IO
  25. New_Line;
  26. L := L.Next;
  27. end loop;
  28. end Print;
  29.  
  30. procedure Insert(List : in out Elem_Ptr; D : in Integer) is
  31. E : Elem_Ptr := new Element;
  32. begin
  33. E.Data := D;
  34. E.Next := List;
  35. -- lub E.all := (D, List);
  36. List := E;
  37. end Insert;
  38.  
  39. -- wstawianie jako funkcja - wersja krótka
  40. function Insert(List : access Element; D : in Integer) return access Element is
  41. ( new Element'(D,List) );
  42.  
  43. -- do napisania !!
  44. procedure Insert_Sort(List : in out Elem_Ptr; D : in Integer) is
  45.  
  46. L : access Element := List;
  47. New_El : access Element;
  48.  
  49. begin
  50.  
  51. L := List;
  52. if List = Null then
  53. List := new Element'(D, Null);
  54. elsif L.Data > D then
  55. List := new Element'(D,L);
  56. else
  57. while L.Next /= Null and then L.Next.Data < D loop
  58. L := L.next;
  59. end loop;
  60. New_El := new Element'(D,L.Next);
  61. L.Next := New_El;
  62. end if;
  63.  
  64. end Insert_Sort;
  65.  
  66. procedure Generate_And_Insert(List : in out Elem_Ptr; N : in Integer ; M : in Integer) is
  67.  
  68. subtype Random_Range is Integer range 0 .. M;
  69. package Random_Generator is new Ada.Numerics.Discrete_Random(Random_Range);
  70. use Random_Generator;
  71. Gen : Generator;
  72. Number : Integer;
  73.  
  74. begin
  75.  
  76. Reset(Gen);
  77. for I in 1 .. N loop
  78. Number := Random(Gen) mod M;
  79. Insert_Sort(List,Number);
  80. end loop;
  81.  
  82. end Generate_and_insert;
  83.  
  84. Lista : Elem_Ptr := Null;
  85.  
  86. begin
  87. Insert_Sort(Lista, 20);
  88. Insert_Sort(Lista,19);
  89. Insert_Sort(Lista,6);
  90. Print(Lista);
  91. end Lab4Lista;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement