Skip to content

Семестровая задача второго семестра

Notifications You must be signed in to change notification settings

admarkov/func_composer

Repository files navigation

Здравствуйте,

Ваша задача будет состоять в следующем. Дан текстовый файл, первая строка которого содержит выражение, записанное по обычным математическим правилам (разрешается использовать целые и вещественные числа, переменные, т. е. слова из маленьких латинских букв без пробелов, арифметические операции, в том числе ^ - возведение в степень, скобки и тригонометрические функции). Последующие строки того же файла содержат определения функций, по одной функции на строку, такого вида:

имя(параметры)=выражение

Здесь имя функции должно подчиняться тем же правилам, что и имена переменных, параметры - список имен параметров функции через запятую, выражение формируется по тем же правилам, что и выражение на первой строке файла. Гарантируется уникальность имен функций, т. е. слова, использованные как имена функций, больше нигде не встречаются, и уникальность имен параметров (т. е. слово, испорльзованное как имя одного из параметров одной из функций, используется только в этой функции и только как соответствующий параметр).

Задача Вашей программы состоит в том, чтобы считать такой файл и выяснить, можно ли представить исходное выражение из первой строки файла как композицию функций, определенных в последующих строках этого файла. При этом не нужно принимать во внимание алгебраических и арифметических свойств участвующих в выражении операций (приоритеты операций стандартны, и все операции, кроме возведения в степень, левоассоциативны, а возведение в степень - правоассоциативна).

Если искомое представление в виде композиции возможно, нужно выводить его в другой текстовый файл в виде обычного выражения, а если невозможно - в файл результата выводится строка <<невозможно>>.

В качестве простейшего примера можно привести определения двух функций

f(x)=x+2

g(y)=y+3

Так вот, для исходного выражения t+2+3 ответом будет композиция g(f(t)), а для выражения t+5 ответом будет <<невозможно>>, равно как и для выражения 2+t+3.

Разумеется, как исходное выражение, так и определения функций могут быть гораздо сложнее.

Д. М.

About

Семестровая задача второго семестра

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published