Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Текст программы Скобки



// Brackets

#include <fstream>

#include <iostream>

#include <string>

using namespace std;

 

bool pBrackets(); //Скобки

bool pSquare(); //Квадратные скобки

bool pRound(); //Круглые скобки

void pstep(); //Переход к следующему символу строки

void pMist(const string& InName); //Обработка ошибки

string S;

 

int main()

{

ifstream fin("infile.txt"); //Объявление файла

if (!fin) {cout << "It is file open mistake." << endl; return 1;}

getline(fin, S); //Чтение строки из файла

if (pBrackets())

{cout << "The result is true: " << endl;}

return 0;

}

bool pBrackets()

{

if ((S[0]=='[') || (S[0]=='+'))

{pSquare(); return 0;}

if ((S[0]=='(') || (S[0]=='-'))

{pRound();return 0;

}

pMist("pBrackets"); //Обработка ошибки

return 1;

}

bool pSquare()

{

if (S[0]=='[')

{

pstep(); //Переход к следующему символу строки

pRound();

pRound();

if (S[0]==']') {pstep();return 0;}

else pMist("pRound");

}

if (S[0] == '+') {pstep();return 0;}

pMist("pRound");

return 1;

}

bool pRound()

{

if (S[0]=='(')

{

pstep();//Переход к следующему символу строки

pSquare();

pSquare();

if (S[0]==')') {pstep();return 0;}

else pMist("pRound");

}

if (S[0]=='-') {pstep();return 0;}

pMist("pRound");

return 1;

}

void pstep()

{

S = S.substr(1);

 

}

void pMist(const string& InName)

{

cout << "Mistake is in : " << InName << " with " << "\"" << S <<"\"\n";

}

171. Построить синтаксический анализатор для понятия список-списков:

список-списков ::= список {; список}*

список ::= элемент {, элемент}*

элемент ::= буква

172. Построить синтаксический анализатор для понятия скобки:

скобки ::=

кругл ::=

квадр ::=

173. Построить синтаксический анализатор для понятия сумма:

сумма ::= целое{знак-операции целое}*

целое ::= цифра{цифра}*

знак-операции ::=

Например, 021 + 16 и 22- суммы, а +1 –не сумма.

174. Написать программу, которая по заданной сумме (определение понятия содержится в формулировке предыдущей задачи) вычисляет и печатает либо значение этой суммы, либо сообщение «при вычислении суммы получен промежуточный результат, превосходящий по модулю миллион».

Форма отчета по лабораторной работе

1) Условие задачи

2) Математическая модель

3) Псевдокод программы

4) Текст программы

5) Результаты тестирования.

Варианты для лабораторных работ

Первый столбец таблицы содержит номер варианта, выдаваемый преподавателем, строки 1:8 таблицы содержат номера задач.



 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.