Advertisement
Guest User

Untitled

a guest
Nov 17th, 2019
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.29 KB | None | 0 0
  1. % hello world program
  2. -module(helloworld).
  3. -export([start/0]).
  4.  
  5. start() ->
  6. io:fwrite("Hello, world!\n"),
  7. Ciag="a * b + c / d",
  8. Infix=string:tokens(Ciag, " "),
  9. io:fwrite("Notacja infiksowa: ~p~n", [Infix]),
  10. {X,Y}=infixToPrefix(Infix,7,[],[]),
  11. io:fwrite("Notacja prefiksowa: ~p~n", [Y]).
  12.  
  13.  
  14. infixToPrefix(Str,N,L1,L2) when N==0 ->
  15. {L1,lists:append(lists:reverse(L1),L2)};
  16.  
  17. infixToPrefix(Str,N,L1,L2) when N>0 ->
  18.  
  19. Element=lists:nth(N,Str),
  20. {X,Y} = case Element of
  21. "+" ->
  22. if
  23. length(L1)==0 -> {lists:append([Element,L1]),L2};
  24. length(L1)>0 ->
  25. El=lists:nth(1,L1),
  26. if
  27. [El] == "+" -> {lists:append([Element,L1]),L2};
  28. [El] == "-" -> {lists:append([Element,L1]),L2};
  29. [El] == "*" ->
  30. Temp=lists:delete(El,L1), % tutaj musze usunąć El
  31. {lists:append(Element,Temp), lists:append([[El],L2])};
  32. [El] == "/" ->
  33. Temp=lists:droplast(L1),
  34. {lists:append(Element,Temp), lists:append([[El],L2])};
  35. true -> io:fwrite("else")
  36. end;
  37. true -> io:fwrite("else")
  38. end;
  39. "-" ->
  40. if
  41. length(L1)==0 -> {lists:append([Element,L1]),L2};
  42. length(L1)>0 ->
  43. El=[lists:nth(1,L1)],
  44. if
  45. [El] == "+" -> {lists:append([Element,L1]),L2};
  46. [El] == "-" -> {lists:append([Element,L1]),L2};
  47. [El] == "*" ->
  48. Temp=lists:delete(El,L1),
  49. {lists:append(Element,Temp), lists:append([[El],L2])};
  50. [El] == "/" ->
  51. Temp=lists:droplast(L1),
  52. {lists:append(Element,Temp), lists:append([[El],L2])};
  53. true -> io:fwrite("else")
  54. end;
  55. true -> io:fwrite("else")
  56. end;
  57. "*" ->
  58. if
  59. length(L1)==0 -> {lists:append([Element,L1]),L2};
  60. length(L1)>0 ->
  61. El=[lists:nth(1,L1)],
  62. if
  63. El == "+" -> {lists:append([Element,L1]),L2};
  64. El == "-" -> {lists:append([Element,L1]),L2};
  65. El == "*" -> {lists:append([Element,L1]),L2};
  66. El == "/" -> {lists:append([Element,L1]),L2};
  67. true -> io:fwrite("else")
  68. end;
  69. true -> io:fwrite("else")
  70. end;
  71. "/" ->
  72. if
  73. length(L1)==0 -> {lists:append([Element,L1]),L2};
  74. length(L1)>0 ->
  75. El=[lists:nth(1,L1)],
  76. if
  77. El == "+" -> {lists:append([Element,L1]),L2};
  78. El == "-" -> {lists:append([Element,L1]),L2};
  79. El == "*" -> {lists:append([Element,L1]),L2};
  80. El == "/" -> {lists:append([Element,L1]),L2};
  81. true -> io:fwrite("else")
  82. end;
  83. true -> io:fwrite("else")
  84. end;
  85.  
  86. _ -> {L1,lists:append([Element,L2])}
  87. end,
  88.  
  89. io:fwrite("Znaki: ~p~n", [X]),
  90. io:fwrite("Litery: ~p~n", [Y]),
  91. io:fwrite("*********************\n"),
  92. infixToPrefix(Str,N-1,X,Y).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement