Кто знает пролог? расскажите, пожалуйста, что делает эта программа! / Ђ. ЏЁзг¦ЄЁ, ¬Ґе¬ в, 3 ЈагЇЇ , 1 Єгаб, 1999-2000 Ј®¤// ЏҐаҐў®¤Ёв «ЈҐЎа ЁзҐбЄ®Ґ ўла ¦ҐЁҐ ў ЇаҐдЁЄбго § ЇЁбм /domains int=string.predicates nextsymbol(string/s/,int,int). /ў®§ўа й Ґв бЁ¬ў®«/ digit(string/s/,char). /ЇаЁЁ¬ Ґ¬, if ЎгЄў Ё«Ё жЁда / start(string,string/s/,int,int). /б®Ўб⢥® Їа®жҐ¤гаЄ / mnozh(string/s/,string/s/,string,int,int). /i,o,o бЁ¬ў®«, ўл室пйЁ© бЁ¬ў®«, res/ factor(string/s/,string/s/,string,int,int). /в® ¦Ґ б ¬®Ґ/ start1(string,string,string,string). alprg(int). /Ћб®ў п Їа®Ја ¬¬ / clauses /===== ‘зЁвлў Ґв бЁ¬ў®« ======/ nextsymbol(C,[Z|Z2],Z1):-C=Z,Z1=Z2. /===== ЋЇҐа жЁп Ё«Ё Ґв ========/ digit("(",Ans):-Ans='N',!. digit(")",Ans):-Ans='N',!. digit("",Ans):-Ans='N',!. digit("/",Ans):-Ans='N',!. digit("+",Ans):-Ans='N',!. digit("-",Ans):-Ans='N',!. digit("=",Ans):-Ans='N',!. digit("?",Ans):-Ans='N',!. digit(_,Ans):-Ans='Y'. /==== ”®а¬Ёа㥬 ўл室го бва®Єг =======/ start1(_, Res2,"=",Res):-Res=Res2. start1(RR, Res2,Res5,Res):- /RR=" (+ "/ concat(RR,Res2,Res3), concat(Res3," ",Res4), concat(Res4,Res5,Res6), concat(Res6,")",Res). /====== ЋЎа Ў®вЄ б« Ј Ґ¬ле ========/ start(Res,"=",Z,Z1):-Res="",Z1=Z,!. start(Res,")",Z,Z1):-Res="",Z1=Z,!. start(Res,"-",Z,Z1):- nextsymbol(C,Z,Z2), mnozh(C,C1,Res2,Z2,Z3), concat("(- ",Res2,Res3), concat(Res3,")",Res4), start(Res5,C1,Z3,Z1), start1(" (+ ",Res4,Res5,Res),!. start(Res,"+",Z,Z1):- nextsymbol(C,Z,Z2), mnozh(C,C1,Res2,Z2,Z3), start(Res5,C1,Z3,Z1), start1(" (+ ",Res2,Res5,Res),!. start(Res,C,Z,Z1):- C<>"+", C<>"-", mnozh(C,C1,Res2,Z,Z3), start(Res5,C1,Z3,Z1), start1(" (+ ",Res2,Res5,Res). /======= ЋЎа Ў®вЄ ¬®¦ЁвҐ«Ґ© =======/ mnozh("=",C1,Res,Z,Z1):-Res="",C1="=",Z1=Z,!. mnozh("+",C1,Res,Z,Z1):-Res="",C1="+",Z1=Z,!. mnozh("-",C1,Res,Z,Z1):-Res="",C1="-",Z1=Z,!. mnozh(")",C1,Res,Z,Z1):-Res="",C1=")",Z1=Z,!. mnozh("/",C1,Res,Z,Z1):- nextsymbol(C,Z,Z2), factor(C,C2,Res2,Z2,Z3), concat("(/ ",Res2,Res3), concat(Res3,")",Res4), mnozh(C2,C1,Res5,Z3,Z1), start1(" ( ",Res4,Res5,Res),!. mnozh("",C1,Res,Z,Z1):- nextsymbol(C,Z,Z2), factor(C,C2,Res2,Z2,Z3), mnozh(C2,C1,Res5,Z3,Z1), start1(" ( ",Res2,Res5,Res),!. mnozh(C,C1,Res,Z,Z1):- C<>"", C<>"/", factor(C,C2,Res2,Z,Z3), mnozh(C2,C1,Res5,Z3,Z1), start1(" ( ",Res2,Res5,Res). /======= ЋЎа Ў®вЄ ⮬®ў ®ЇҐа жЁ© =========/ factor("(",C1,Res,Z,Z1):-nextsymbol(C2,Z,Z2), start(Res,C2,Z2,Z3), nextsymbol(C1,Z3,Z1),!. factor(C,C1,Res,Z,Z1):- digit(C,F), Z1=Z, F='N', Res="", C1=C,!. factor(C,C1,Res,Z,Z1):- digit(C,F), F='Y', nextsymbol(C2,Z,Z2), factor(C2,C1,Res2,Z2,Z1), /str_char(Sta,C),/ concat(C,Res2,Res). /========= Ћб®ў п Їа®Ја ¬¬ =======/ alprg(Z):- /write("‚ўҐ¤ЁвҐ ўла ¦ҐЁҐ: "),/ nextsymbol(F,Z,Z1), start(X,F,Z1,_), write("ЋвўҐв: "), write(X). /goal alprg.*/
>>2016828 (OP)>/ А. Пичужки, мехм т, 3 групп , 1 курс, 1999-2000 год/>/ Переводит лгебр ическое выр жеие в префиксую з пись /
>>2016832Спасибо!Это, я так понимаю, работа студента? Если да, не мог бы дать ссылку?
>>2016832Ой, это первые комментарии