Материалы, подготовленные в результате оказания услуги, помогают разобраться в теме и собрать нужную информацию, но не заменяют готовое решение.
Подробнее о заявке
Дата заказа: 04.04.2014
Выполнено: 10.04.2014
Лабораторная работа по c/c++:

Реализовать программу рекурсивного спуска вар. 869484

Задание

Цель работы

Целью данной лабораторной работы является применение на практике алгоритма рекурсивного спуска на основе библиотеки обработки входной строки.

Инструменты

Для выполнения данной лабораторной работы Вам потребу-ется любой компилятор языка С, способный генерировать 32-раз-рядные программы для той ОС, с которой Вы работаете. Для ОС Windows рекомендуется использовать бесплатную среду разра-ботки Microsoft Visual C++ Express. Основная Ваша работа будет заключаться в формировании программы перевода выражения в постфиксную запись, которая была разобрана на лекции. Для первичной обработки строк пред-лагается использовать модуль match.

Процедура рекурсивного спуска prim() { int s; if (match("(")) { if (expr()==0) return 0; if (!match(")")) { cerror(E_RIGHT_BRACKET); return 0; } } else if (a=numb(&s)) { printf(”%d ”, s); } else { cerror(E_EXPRESS_SINTAX); return 0; } return 1; } mult() { if (prim()==0) return 0; while (1) { if (match("")) { if (prim()==0) return 0; printf(” ”); } else if (match("/")) { if (prim()==0) return 0; printf(”/ ”); } else break; } return 1; } add() { if (mult()==0) return 0; while (1) { if (match("+")) { if (mult()==0) return 0; printf(”+ ”); } else if (match("-")) { if (mult()==0) return 0; printf(”- ”); } else break; } return 1; }

Модуль match Данный модуль предназначен для первичной обработки строк и позволяет выделять из строки лексемы. Здесь описаны интерфейсные функции модуля match.

void match_init(char* line); Процедура инициализации. Разбор строки всегда начинается с вызова этой функции. В качестве параметра передается входная строка.

void match_done(void); Процедура деинициализации. После разбора строки необхо-димо вызвать данную функцию.

int match(char *lit); Поиск указанной подстроки в начале входной строки. Если есть, то найденная подстрока удаляется и функция возвращает 1.

int amatch(char *lit, int len); Аналогично предыдущему, но дополнительно указывается длина подстроки. Это используется для того, чтобы различать выражения типа ’for’ и ’formula’, где первое, это ключевое слова, а второе — идентификатор.

int symname(char *sname); Ищет идентификатор (метку) во входной строке. Метка на-чинается с подчеркивания или буквы, далее следуют буквы, под-черкивание или цифры.

int number(int val[]); Ищет целое знаковое число во входной строке

void skipblanks(void); Пропускает последовательность пробельных символов (пробел, табуляция) во входной строке.

skipchars(void); Пропускает лексемы и следующие пустые символы. Ис-пользуется для обработки ошибок.

Задание

  1. Реализовать программу рекурсивного спуска выражения и перевода в постфиксный вид.
  2. Реализовать главную программу, считывающую строки из входного потока и выдающую в конце сообщения «OK» в случае успешного разбора или «FAIL» в случае неуспешного разбора.
  3. Добавить в процедуру разбора задание по номеру вариан-та.
  4. (Дополнительное.) Изучить разработку make файлов и разработать make файл для сборки проекта из двух модулей.
  5. (Дополнительное.) Функция разбора вещественного числа в инженерной форме.

Вариант 3. Строки. Обеспечить поддержку строки. Строки записываются в кавычках. Дополнительно необходимо обеспечить ввод кавычки в виде последовательности из двух кавычек. На выходе строки выдавать в следующем формате:

string("")

где строка есть последовательность символов. Кавычка, если она была в исходной строке, должна быть заменена последовательностью символов \".

Например

"Hello World!" на выходе string("Hello World!") "Hello "

Читать больше
Срок выполнения:
  • Бесплатные корректировки
  • Шпаргалки в подарок!
  • Предоплата всего 25%
от 2 дней
Похожие заявки по c/c++

Тип: Лабораторная работа

Предмет: C/C++

Разработка программу с использование win api

Стоимость: 4400 руб.

Тип: Лабораторная работа

Предмет: C/C++

Минимизировать булеву функцию

Стоимость: 1500 руб.

Тип: Лабораторная работа

Предмет: C/C++

код на С

Стоимость: 1428 руб.

Тип: Лабораторная работа

Предмет: C/C++

Лабораторная работ по дисциплине Структуры данных

Стоимость: 1140 руб.

Тип: Лабораторная работа

Предмет: C/C++

CLI C windows forms

Стоимость: 1176 руб.

Закажи Лабораторную работу с полным сопровождением до защиты!
Думаете, что скачать готовую работу — это хороший вариант? Лучше закажите уникальную и сдайте её с первого раза!

Отзывы студентов

Общий рейтинг
0.00 из 5 (0 голосов)
Наталья 13-10-2026
Спасибо огромное за помощь! Не первый раз к Вам обращаюсь и всегда всё на отлично!
Максим 13-10-2026
Хорошая работа. Руководитель похвалил
Анастасия 12-10-2026
Огромное спасибо за проделанную работу! Работу оценили на самую высокую оценку, в чем я и не сомневалась!
Марина 11-10-2026
Все понравилось, спасибо огромное. При любом вопросе отвечают сразу. Если вдруг, нужна помощь или нужно что-то скорек...
Константин 11-10-2026
Спасибо за работу! Продолжу сотрудничать с сервисом. Все понравилось.
Михаил 10-10-2026
Нет такого слова которое оценило все их великолепие. Спасибо
Надежда 09-10-2026
добрый вечер! работа оценена на отлично, спасибо автору, все выполнено раньше срока, без правок.
Мария 08-10-2026
Заказывала работы 3 раза все отлично сделано , буду пользоваться ещё )
Любовь 08-10-2026
Здравствуйте. Спасибо большое за разработку урока ,,Музыкальные портреты в кюях Даулеткерея Шигаева". Мне очень понра...
Татьяна 08-10-2026
Спасибо за работу. Очень выручили. Заказ выполнен в срок и в соответствии с заявленными требованиями
Лайфхаки по оформлению работ
Как правильно оформить список литературы по ГОСТу 2026 + пример

При написании любой студенческой работы нужно правильно оформлять список использованной литературы. В статье рассказываем, какое значение у списка использованных источников в студенческих работах, и какие правила оформления списков литературы по ГОСТу в 2026 году. А в конце делимся примерами, как оф...

Читать дальше
Как правильно написать литературный обзор + пример

Литературный обзор — важная часть научного исследования. В статье рассказываем, какое значение имеет литобзор, и как писать литературный обзор по разным темам: медицине, менеджменту.Кстати, мы уже писали о том, . Еще больше полезных материалов из мира образования ищите на нашем . И не забывайте след...

Читать дальше

Предложение актуально на 16.10.2026