Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Центр помощи > [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, и все, сам не справишься? |