PDA

Просмотр полной версии : Помогите!!Работа со строками...(Borland C++ DOS)



Phonix
09.04.2008, 22:12
Нужно написать программу для работы с множествами..Пользователе должен определять количество множеств от 2 до 5, и количество символов в каждом множестве. Эту часть программы я написал. Застрял на инициализаторе строки. Например пользователь вводит: (А+В)*С или A\B+C*D или (A+B)*D+C, варианты могут быть разные... Я не знаю как сделать чтобы программа инициализировала строку, и после чего выполнила необходимые операции над массивами.

Хыиуду
10.04.2008, 11:14
Простите, телепаты в отпуске, а ваше задание относится к разделу "Сходи туда - незнамо куда, принеси то - незнамо что". Как именно программа должна инициализировать строку? Пустым значением или чем-то конкретным? Какое отношение к этой строке имеет то, что ввел пользователь? Какие необходимые операции над массивами надо выполнить?

Phonix
10.04.2008, 20:44
Извените за некоректно заданый вопрос!На форуме пишу первый раз....

Операции над массивами: объединение(аналогия "+", к массиву А добавляются элементы массива В), пересечение(тоисть общие элементы из двух массивов записуются в третий), деление(тоисть А без В, из массива А удаляются общие элементы с В)

По поводу инициализации. Пользователь вводит формулу как я писал выше, а програма должна выполнить опереции над массивами.
Если пользователь вводит (A+B)*C, то програма должна массив А объединить с В и пересечь это все с С.

drummer
10.04.2008, 21:48
Смотри алгоритм польской записи. Мне его писать лень.

Phonix
10.04.2008, 22:58
Ты имел введу обратная польская запись? Напиши пожалуйста этот алгоритм. Я в поисковике искал и ничего конкретного не нашел...

airyashov
11.04.2008, 09:05
Ты имел введу обратная польская запись? Напиши пожалуйста этот алгоритм. Я в поисковике искал и ничего конкретного не нашел...
http://www.interface.ru/home.asp?artId=1492

BBB
11.04.2008, 11:51
Операции над массивами: ... деление (то есть А без В, из массива А удаляются общие элементы с В) Вообще-то, в теории множеств это действие называется разность двух множеств.

Phonix
13.04.2008, 17:51
Спасибо за советы. ВВВ ты прав, я перепутал.

Может у когото еще есть какието идеи по поводу решения задачи? с ОПЗ я врятли разберуся....

Хыиуду
14.04.2008, 11:15
Написать простенький анализатор, который будет знать порядок выполнения операций и в соответствии с этим порядком заменять операнды. Например,
E-A/(B+C*D) - сначала выполняются действия в скобках, из них первое умножение.
E-A/(B+F), где F=C*D,
потом продолжает выполняться действие в скобках
E-A/G, где G=B+F
и т.д.