Advertisement
Guest User

Untitled

a guest
Jan 28th, 2020
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Erlang 1.58 KB | None | 0 0
  1.  
  2. -module(dwa).
  3. -compile([export_all]).
  4.  
  5.  
  6. print({gotoxy,X,Y}) ->
  7.    io:format("\e[~p;~pH",[Y,X]);
  8. print({printxy,X,Y,Msg}) ->
  9.    io:format("\e[~p;~pH~p",[Y,X,Msg]);  
  10. print({clear}) ->
  11.    io:format("\e[2J",[]);
  12. print({tlo}) ->
  13.   print({printxy,2,4,1.2343}),  
  14.   io:format("",[])  .
  15.    
  16. printxy({X,Y,Msg}) ->
  17.    io:format("\e[~p;~pH~p~n",[Y,X,Msg]).
  18.  
  19.  
  20.  
  21. losujLiczbe(N) -> random:uniform(N).
  22.  
  23. losujiPrzeslijNLiczb(1,Pid, DoWypisania) ->
  24.     Wylosowana = losujLiczbe(100),
  25.     Pid!{Wylosowana, liczba},
  26.     printxy({0,DoWypisania, Wylosowana}) ;
  27. losujiPrzeslijNLiczb(N, Pid, DoWypisywania) ->
  28.     Wylosowana = losujLiczbe(100),
  29.     Pid!{Wylosowana, liczba},
  30.     printxy({0,DoWypisywania,Wylosowana}),
  31.     losujiPrzeslijNLiczb(N-1, Pid, DoWypisywania+1).
  32.  
  33. producent() ->
  34.     N=15,
  35.     printxy({0,0,producent}),
  36.     Posrednik = spawn(?MODULE, posrednik, []),
  37.     losujiPrzeslijNLiczb(N, Posrednik, 2),
  38.     Posrednik!{koniec},
  39.     printxy({0,N+2,'Koniec producenta'}).
  40.    
  41.    
  42. otrzymujIPrzesylaj(Konsument,N)->
  43.     receive
  44.         {Liczba, liczba} -> Konsument!{Liczba * 2, pomnozona},
  45.             printxy({20,N,Liczba}),
  46.             otrzymujIPrzesylaj(Konsument,N+1);
  47.         {koniec} -> Konsument!{koniec},
  48.             printxy({20,N,"Koniec producenta"})
  49.     end.
  50.            
  51.    
  52. posrednik()->
  53.     printxy({20,0,"Posrednik"}),
  54.     Konsument = spawn(?MODULE, konsument, []),
  55.     otrzymujIPrzesylaj(Konsument,2).
  56.  
  57.  
  58. otrzymuj(N)->
  59.     receive
  60.         {Liczba, pomnozona} -> printxy({40,N,Liczba}), otrzymuj(N+1);
  61.         {koniec} -> printxy({40,N,"Koniec konsumenta"})
  62.     end.
  63.  
  64. konsument() ->
  65.     printxy({40,0,"Konsument"}),
  66.     otrzymuj(2).
  67.    
  68. main() ->
  69.     print({clear}),
  70.     producent().
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement