Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- % hello world program
- -module(helloworld).
- -export([start/0]).
- start() ->
- io:fwrite("Hello, world!\n"),
- Ciag="a * b + c / d",
- Infix=string:tokens(Ciag, " "),
- io:fwrite("Notacja infiksowa: ~p~n", [Infix]),
- {X,Y}=infixToPrefix(Infix,7,[],[]),
- io:fwrite("Notacja prefiksowa: ~p~n", [Y]).
- infixToPrefix(Str,N,L1,L2) when N==0 ->
- {L1,lists:append(lists:reverse(L1),L2)};
- infixToPrefix(Str,N,L1,L2) when N>0 ->
- Element=lists:nth(N,Str),
- {X,Y} = case Element of
- "+" ->
- if
- length(L1)==0 -> {lists:append([Element,L1]),L2};
- length(L1)>0 ->
- El=lists:nth(1,L1),
- if
- [El] == "+" -> {lists:append([Element,L1]),L2};
- [El] == "-" -> {lists:append([Element,L1]),L2};
- [El] == "*" ->
- Temp=lists:delete(El,L1), % tutaj musze usunąć El
- {lists:append(Element,Temp), lists:append([[El],L2])};
- [El] == "/" ->
- Temp=lists:droplast(L1),
- {lists:append(Element,Temp), lists:append([[El],L2])};
- true -> io:fwrite("else")
- end;
- true -> io:fwrite("else")
- end;
- "-" ->
- if
- length(L1)==0 -> {lists:append([Element,L1]),L2};
- length(L1)>0 ->
- El=[lists:nth(1,L1)],
- if
- [El] == "+" -> {lists:append([Element,L1]),L2};
- [El] == "-" -> {lists:append([Element,L1]),L2};
- [El] == "*" ->
- Temp=lists:delete(El,L1),
- {lists:append(Element,Temp), lists:append([[El],L2])};
- [El] == "/" ->
- Temp=lists:droplast(L1),
- {lists:append(Element,Temp), lists:append([[El],L2])};
- true -> io:fwrite("else")
- end;
- true -> io:fwrite("else")
- end;
- "*" ->
- if
- length(L1)==0 -> {lists:append([Element,L1]),L2};
- length(L1)>0 ->
- El=[lists:nth(1,L1)],
- if
- El == "+" -> {lists:append([Element,L1]),L2};
- El == "-" -> {lists:append([Element,L1]),L2};
- El == "*" -> {lists:append([Element,L1]),L2};
- El == "/" -> {lists:append([Element,L1]),L2};
- true -> io:fwrite("else")
- end;
- true -> io:fwrite("else")
- end;
- "/" ->
- if
- length(L1)==0 -> {lists:append([Element,L1]),L2};
- length(L1)>0 ->
- El=[lists:nth(1,L1)],
- if
- El == "+" -> {lists:append([Element,L1]),L2};
- El == "-" -> {lists:append([Element,L1]),L2};
- El == "*" -> {lists:append([Element,L1]),L2};
- El == "/" -> {lists:append([Element,L1]),L2};
- true -> io:fwrite("else")
- end;
- true -> io:fwrite("else")
- end;
- _ -> {L1,lists:append([Element,L2])}
- end,
- io:fwrite("Znaki: ~p~n", [X]),
- io:fwrite("Litery: ~p~n", [Y]),
- io:fwrite("*********************\n"),
- infixToPrefix(Str,N-1,X,Y).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement