1 Составные выражения, состоящие из нескольких операций (десятичные дроби) Версия 1.3 от 01.08.2013. Генерация задач: <Ctrl> + <Alt> + <0>. Удаление последней задачи: <Ctrl> + <Alt> + <Backspace>. Красным цветом выделены параметры, задаваемые пользователем. {first} = 1 & {last} = 2 & {packet} = 1 & {limit} = 5000 & {random} = 1 & {info} = 0 {cap}=0 & {before} = & {after} = & {title} = Найти значение выражения & {qnum} = 0 {n} = 6 {b*1} = 30 {b+1} = 200 {b*2} = 250 {b+2} = 600 {b3} = 1000 &! (примерное) число арифметических операций &! верхняя граница 1-й зоны умножения/деления &! верхняя граница 1-й зоны сложения/вычитания &! верхняя граница 2-й зоны умножения/деления &! верхняя граница 2-й зоны сложения/вычитания &! верхняя граница 3-й зоны: вычисление проводятся в пределах {b3} &! должно быть: 1 < {b*1} < {b*2} < {b3} &! должно быть: 1 < {b+1} < {b+2} < {b3} &! числа в первой зоне получаются только вычитанием/делением &! числа во третьей зоне получаются только сложением/умножением &! числа во второй зоне получаются любым из 4-х действий {FractMultDiv} = 50 &! доля операций умножения и деления в процентах {order} = 0 &! =0 - произвольный порядок операций, &! =1 - строго слева направо &! =2 - строго справа налево {shmin} = -4 &! минимальный сдвиг запятой {shmax} = 1 &! максимальный сдвиг запятой {first} = 1 {goto} = question {Expand} &! in: {a?}, {j?}, {MultDiv0}; out: {b?}, {c?}, {o?}, {op?}, {subst?} {MultDiv} = ({MultDiv0} > -1) [of] {MultDiv0}, ({FractMultDiv} > (0 [to] 99)) {MultDiv0} = -1 {b1} = {MultDiv} [of] {b*1}, {b+1} {b2} = {MultDiv} [of] {b*2}, {b+2} {up} = {MultDiv} [of] {div}, {min} {down} = {MultDiv} [of] {mult}, {plus} {op?}=({a?} < {b1}) [of] {up}, {op?}=(({op?}[eq] ) [and] ({a?} < {b2})) [of] ((1 [to] 2) [of] {up}, {down}), {op?} {op?}=({op?} [eq] ) [of] {down}, {op?} {o?} ={op?} {subst?} = {({j?} + 1)}{op?}{{j?}} {goto} = ({op?} [eq] {mult}) [of] , endmult {kmax?} = ({a?} ^ 0.5) : 1 {factors?} = 1 {k?} = 1 2 {loopmult} {k?} = {k?} + 1 {goto} = (({a?} % {k?}) = 0) [of] , jumpmult {factors?} = {factors?}, {k?} {jumpmult} {goto} = ({k?} < {kmax?}) [of] loopmult, endloopmult {endloopmult} {nfact?} = [count] {factors?} {goto} = ({nfact?} = 1) [of] , normalcase {b?} = 2 [to] {kmax?} {c?} = {a?} : {b?} {r?} = {a?} % {b?} {goto} = (1 [to] 2) [of] , noswap {tmp?} = {b?} {b?} = {c?} {c?} = {tmp?} {noswap} {subst?} = {({j?} + 1)}{mult}{{j?}}{plus},{r?} {op?} = {plus} {extra} = {extra} + 1 {goto} = {return} {normalcase} {b?} = (2 [to] {nfact?}) [of] {factors?} {c?} = {a?} : {b?} {goto} = (1 [to] 2) [of] , noswap1 {tmp?} = {b?} {b?} = {c?} {c?} = {tmp?} {noswap1} {goto} = {return} {endmult} {goto} = ({op?} [eq] {div}) [of] , enddiv {b?} = (2*{a?}) [to] {b3} !{ratio} = ({b2} − (2*{a?})) / ({b2} − {b1}) !{b?} = ({ratio} > 0) [of] ( \ (({ratio}*100) > (0 [to] 99)) [of] (({a?}*2) [to] {b2}), (({b2}+1) [to] {b3})\ ), ((2*{a?}) [to] {b3}) {c?} = {b?} : {a?} {b?} = {c?} * {a?} {goto} = {return} {enddiv} {goto} = ({op?} [eq] {plus}) [of] , endplus {b?} = ({a?} < {b*2}) [of] ((1 [to] 2) [of] (2 [to] {b*1}), (2 [to] ({a?}−2))), {b?} = ({b?} [eq] ) [of] \ ((1 [to] 3) [of] (2 [to] {b*1}), (({b*1}+1) [to] {b*2}), (2 [to] ({a?}−2))), {b?} {c?} = {a?} − {b?} {goto} = (1 [to] 2) [of] , noswap2 {tmp?} = {b?} {b?} = {c?} {c?} = {tmp?} 3 {noswap2} {goto} = {return} {endplus} {goto} = ({op?} [eq] {min}) [of] , endmin {bmax?} = (({a?}+2) < {b3}) [of] {b3}, ({a?} + 2) {b?} = ({a?} < {b*1}) [of] \ ((1 [to] 2) [of] (({a?}+2) [to] {b3}), (({a?}+2) [to] {b*2})), {b?} = ({b?} [eq] ) [of] (({a?}+2) [to] {bmax?}), {b?} {c?} = {b?} − {a?} {goto} = {return} {endmin} {error} = impossible {goto} = {return} {begin} {extra} = 0 {X} = 0 {MultDiv0} = {FractMultDiv} > (0 [to] 99) {b1} = {MultDiv0} [of] {b*1}, {b+1} {b2} = {MultDiv0} [of] {b*2}, {b+2} {res} = (1 [to] 3) [of] (2 [to] ({b1}−1)), ({b1} [to] ({b2}−1)), ({b2} [to] {b3}) {L} = , {res}, {P} = {shmin} [to] {shmax} {res1} = {res} * (10 ^ {P}) {i} = 0 {loop} {i} = {i} + 1 {Lm} = ([count] {L}) : 3 {try} {Li} = {order} [of] {Lm}, {i}, (1 [to] {Lm}) {Ln} = 3*({Li} − 1) {goto} = ((({Ln} + 3) [of] {L}) [eq] ) [of] , try {op} = ({Ln} + 1) [of] {L} {ev} = ({Li} % 2) = 0 {a?} = ({Ln} + 2) [of] {L} {j?} = 2*{i} &{return} = here {goto} = Expand & {here} {br1} = {op} [eq] {div} {br2} = ({op} [eq] {mult}) [and] (({op?} [eq] {plus}) [or] ({op?} [eq] {min})) {br3} = ({ev} [and] ({op} [eq] {min})) [and] (({op?} [eq] {plus}) [or] ({op?} [eq] {min})) {br4} = ({op} [eq] {mult}) [and] ({op?} [eq] {div}) {[} = (({br1} [or] {br2}) [or] ({br3} [or] {br4})) [of] [, {]} = ({[} [eq] ) [of] , ] {Pa} = {Li} [of] {P} {Pb} = (({o?} [eq] {plus}) [or] ({o?} [eq] {min})) [of] {Pa}, {Pc} = (({o?} [eq] {plus}) [or] ({o?} [eq] {min})) [of] {Pa}, 4 {Pmin} = (({Pa}−{shmax}) < {shmin}) [of] {shmin}, ({Pa}−{shmax}) {Pmax} = (({Pa}−{shmin}) > {shmax}) [of] {shmax}, ({Pa}−{shmin}) {Pb} = ({o?} [eq] {mult}) [of] ({Pmin} [to] {Pmax}), {Pb} {Pc} = ({o?} [eq] {mult}) [of] ({Pa}−{Pb}), {Pc} {Pmin} = (({Pa}+{shmin}) < {shmin}) [of] {shmin}, ({Pa}+{shmin}) {Pmax} = (({Pa}+{shmax}) > {shmax}) [of] {shmax}, ({Pa}+{shmax}) {Pb} = ({o?} [eq] {div}) [of] ({Pmin} [to] {Pmax}), {Pb} {Pc} = ({o?} [eq] {div}) [of] ({Pb}−{Pa}), {Pc} {P} = {P}, {Pc}, {Pb} {goto} = (([count] {subst?}) = 1) [of] subst-ok, {subst?} = (1 [of] {subst?})((2 [of] {subst?}) * (10 ^ {Pa})) {subst-ok} {L} = ({Ln} + 3), {[}{subst?}{]} [put] {L} {L} = {L}, {o?}, {c?}, , {o?}, {b?}, {goto} = ({i} < {n}) [of] loop, endloop {endloop} {Lm} = ([count] {L}) : 3 {expression} = {1} {i} = 0 {loop1} {i} = {i} + 1 {j} = 3*{i} {new} = (({j} [of] {L}) [eq]) [of] ((({j}−1) [of] {L}) * (10 ^ ({i} [of] {P}))), ({j} [of] {L}) {new} = (({i} = {Lm}) [and] {X}) [of] X, {new} {expression} = \{{i}}\{new}\ [subst] {expression} {goto} = ({i} < {Lm}) [of] loop1, endloop1 {endloop1} [ =>( ] =>) {mult} => ∙ {div}=> ∕ {plus} => + {min} => − {question} {goto} = {first} [of] , continue {first} = 0 {goto} = begin {continue} {expression} = \.\,\ [subst] {expression} {res1} = \.\,\ [subst] {res1} Стандартное выражение приблизительно в {n} действий 1) | {expression}. | {res1}. 5 {goto} = {first} [of] , continue {first} = 0 {order} = 1 {FractMultDiv} = 100 {goto} = begin {continue} {goto} = ({extra} > 0) [of] begin, {expr} = \[\\ [subst] {expression} {expr} = \]\\ [subst] {expr} {expr} = \{mult}\,{mult},\ [subst] {expr} {expr} = ({mult},)(\{div}\,{div},\ [subst] {expr}) {i} = 0 {nom} = _ {den} = _ {nnom} = 0 {nden} = 0 {loop2} {nom} = ((({i}+1) [of] {expr}) [eq] {mult}) [of] {nom}{mult}(({i}+2) [of] {expr}), {nom} {nnom} = ((({i}+1) [of] {expr}) [eq] {mult}) [of] ({nnom}+1), {nnom} {den} = ((({i}+1) [of] {expr}) [eq] {div}) [of] (({i}+2) [of] {expr}){mult}{den}, {den} {nden} = ((({i}+1) [of] {expr}) [eq] {div}) [of] ({nden}+1), {nden} {i} = {i} + 2 {goto} = ({i} < ([count] {expr})) [of] loop2, {endloop2} {goto} = ({nden} = 0) [of] begin, {[n} = ({nnom} > 1) [of] [, {]n} = ({nnom} > 1) [of] ], {[d} = ({nden} > 1) [of] [, {]d} = ({nden} > 1) [of] ], {nom} = \.\,\ [subst] {nom} {den} = \.\,\ [subst] {den} {res1} = \.\,\ [subst] {res1} _{mult} => {mult}_ => Большая дробь вида (a*b*c*...) / (z*y*x*...) 2) |{[n}{nom}{]n}{div}{[d}{den}{]d}. | {res1}
© Copyright 2025 Paperzz