Skip to content

Liza-Shch/CppTP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

CppTP

В ходе курса по углубленному изучению С++ были решены обе задачи домашнего задания.

Задача А. Задача о скобочной последовательности

Составить программу построчной обработки текста. Суть обработки - отбор строк, содержащих одинаковое количество открывающих и закрывающих круглых скобок.

Программа считывает входные данные со стандартного ввода, и печатает результат в стандартный вывод.

Процедура отбора нужных строк должна быть оформлена в виде отдельной функции, которой на вход подается массив строк (который необходимо обработать), количество переданных строк, а также указатель на переменную, в которой необходимо разместить результат - массив отобранных строк. В качестве возвращаемого значения функция должна возвращать количество строк, содержащихся в результирующем массиве.

Программа должна уметь обрабатывать ошибки - такие как неверные входные данные(отсутствие входных строк) или ошибки выделения памяти и т.п. В случае возникновения ошибки нужно выводить об этом сообщение "[error]" и завершать выполнение программы.

Задача В. Программа калькулятор для строк

Разработайте программу-калькулятор, умеющую вычислять арифметические выражения над строками. На стандартный поток ввода программы подается входное выражение, а результат вычислений программа должна вывести на стандартный поток вывода.

Строка - это заключенный в двойные кавычки произвольный набор символов. Например, "1", "123", "zz!@#111' ad x" - строки, 'asd', "asddas - не строки. "" - пустая строка, допустимо.

Поддерживаемые операции: '+' - конкатенация, '*' - умножение, '()' - задание приоритета вычислений. Конкатенировать (складывать) можно только строки! Иначе необходимо вывести "[error]". Примеры: "123" + "456", ответ - "123456". "123" + a: ошибка, необходимо вывести "[error]".

Умножать можно только строку на число! Иначе необходимо вывести "[error]". Примеры: "123" * 1, ответ - "123". "123" * 2, ответ - "123123". "123" * 3 ответ - "123123123" и т.д. "123" * a: ошибка, необходимо вывести "[error]".

Между операциями и строками может быть произвольное количество пробелов - их необходимо пропускать. Например, "11" * 2 + ( "22" + "33" ) - валидное выражение, результат тут будет "11112233". При вычислениях должны учитываться приоритеты операций (в том числе, заданные вручную при помощи круглых скобочек).

В случае, если введенное выражение содержит ошибку (невалидное выражение), необходимо вывести в поток стандартного вывода сообщение "[error]" и завершить выполнение программы.

About

C++ in the technopark Mail.ru

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages