Различия между версиями 3 и 4
Версия 3 от 2019-04-06 20:17:15
Размер: 2862
Редактор: FrBrGeorge
Комментарий:
Версия 4 от 2019-04-06 20:22:23
Размер: 2870
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 58: Строка 58:
 . 0  . <<G_(0)>>

Написать полную программу — простой целочисленный калькулятор с обработкой ошибок ввода, деления и переполнения.

  • Работа калькулятора:
    1. Ввод первого числа
    2. Ввод знака арифметической операции
    3. Ввод второго числа
    4. Вывод результата (применение операции к первому и второму числу). Результат выводится, даже если была ошибка.
    5. Результат становится первым числом для следующей операции
    6. Переход на п. 2
  • Поддерживаемые действия: "+", "-", "*", "/"
  • Дополнительно (обязательно с использованием обработчика исключений) отслеживаются:
    1. Ввод нечислового значения вместо числа (исключение 8). В этом случае:
      • выводится сообщение "Invalid input"
      • число вводится заново (и так до тех пор, пока не будет введено число)
    2. Деление на 0 (в Mars — исключение 9; обратите внимание на то, как разворачивается псевдоинструкция div $t0 $t1 %t2, и только она). В этом случае

      • выводится сообщение "Division by zero"
      • результат операции должен быть равен 0
    3. Знаковое переполнение (исключение 12). В этом случае
      • выводится сообщение "Error"
      • результат операции равен второму слагаемому
  • Ввод заканчивается, если введённый знак действия не поддерживается (пустая строка, точка, пробел и т п.)

22
*
lll
3
/
0
+
43545
+
2147483647
.

Invalid input
66
Division by zero
0
43545
Error
2147483647

Вот тот же ввод-вывод в виде диалога, в котором ввод чисел помечен зелёным, ввод операций — синим, а вывод программы — красным (ошибки) и белым.

  • 22

  • *

  • ttt

  • Invalid input

  • 3

  • 66
  • /

  • 0

  • Division by zero

  • 0
  • +

  • 43545

  • 43545
  • +

  • 2147483647

  • Error

  • 2147483647
  • .


CategoryHomework

LecturesCMC/ArchitectureAssembler2019/Homework_ExCalc (последним исправлял пользователь FrBrGeorge 2019-04-06 20:22:23)