Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C] Обратная польская нотация


Автор: Nikolyan 25.4.2007, 15:35
Вобщем такое дело, вместо того, чтобы лекции слушать, в интернете сидел. Вот сейчас экзамен будет, а я тока вчера Си выучил до массивов. Ну а сейчас все говорят, что обязательно всех спросят про ОПН, типа теория и написание библиотеки. Вобщем задание примерно такое:
1.    Работа со стеком и вектором должна быть вынесена в отдельную библиотеку. В ней должны быть реализованы: типы: – стек и вектор (включая операции положить элемент в вектор/стек,  достать элемент из стека, получить i-ый элемент вектора, а так же функция, возвращающая число элементов в векторе/стеке), базовым элементом для стека/вектора будет тип: void *
2.    Работа с полькой записью должны быть вынесена в отдельную библиотеку. В этой библиотеке должны быть реализованы:
a.    Функция, принимающая в качестве параметра строку (char *) и возвращающая польскую запись, соответствующую этой строке (указатель на вектор), числа в строке - целые.
b.    Функция, принимающая в качестве параметра польскую запись (указатель на вектор) и возвращающая результат (вещественное число).
c.    Структуру, к-ая может хранить числа и операции
d.    Ф-ии для работы с данной структурой: isNumber, isOpernad, getValue – возвращает число, calculate – вычисляет значение операции, getPriority – возвращает приоритет операции.
3.    Должны поддерживаться операции: +, -, *, /, а так же скобки, вложенность может быть произвольного уровня (ограничение на длину вводимой строки – 120 символов)
4.    программа должна считывать строку, представляющую собой стандартное арифметическое выражение ((2 + 2) * 3 - 1) и выводить
a.    польскую запись этого выражения
b.    выводить результат

для такого примера (A+B)*(C+D)-E  {AB+CD+*E-}.
Если теорию я понимаю, то про библиотеки абсолютно не знаю ничего(ещё бы, дальше массивов не продвинулся ещё). Вобщем, добрые люди, если у кого-нибудь есть время, или знаете, где инфу нужную найти, помогите, ну очень надо(обязательно после этого Си выучу).

Автор: Nikolyan 25.4.2007, 15:52
Эх, вот нашёл похожую темку, но там Си++ и алгоритм, кажись, маленько другой. Если вы разбираетесь в Си++, может поможете это дело в Си перевести?
http://forum.vingrad.ru/topic-122439.html

Автор: Nikolyan 25.4.2007, 16:57
Всё, поздняк! Напишите хоть для переэкзаменовки.

Автор: zkv 26.4.2007, 08:21
Nikolyan, там всего лишь cin/cout надо заменить на printf/scanf, и все, сам не справишься?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)