Дискретный анализ ← ЛабораторныеЛабораторная работа №6

Калькулятор

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

Список арифметических операций:

  • Сложение (+).
  • Вычитание (-).
  • Умножение (*).
  • Возведение в степень (^).
  • Деление (/).

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

В случае возникновения переполнения в результате вычислений, попытки вычесть из меньшего числа большее, деления на ноль или возведении нуля в нулевую степень, программа должна вывести на экран строку Error.

Список условий:

  • Больше (>).
  • Меньше (<).
  • Равно (=).

В случае выполнения условия, программа должна вывести на экран строку true, в противном случае — false.

Ограничения

Количество десятичных разрядов целых чисел не превышает 100000. Основание выбранной системы счисления для внутреннего представления «длинных» чисел должно быть не меньше 10000.

Формат входных данных

Входный файл состоит из последовательностей заданий, каждое задание состоит их трех строк:

  • Первый операнд операции.
  • Второй операнд операции.
  • Символ арифметической операции или проверки условия (+, -, *, ^, /, >, <, =).

Числа, поступающие на вход программе, могут иметь «ведущие нули».

Формат выходных данных

Для каждого задания из входного файла нужно распечатать результат на отдельной строке в выходном файле:

  • Числовой результат для арифметических операций.
  • Строку Error в случае возникновения ошибки при выполнении арифметичесокй операции.
  • Строку true или false при выполнении проверки условия.

В выходных данных вывод чисел должен быть нормализован, то есть не содержать в себе «ведущих» нулей.

Пример

Входной файл Выходной файл
  38943432983521435346436 
  354353254328383 
  + 
  9040943847384932472938473843 
  2343543 
  - 
  972323 
  2173937 
  > 
  2 
  3 
  - 
  38943433337874689674819
  9040943847384932472936130300
  false
  Error