Skip to content
This repository has been archived by the owner on Jun 25, 2020. It is now read-only.

Latest commit

 

History

History
129 lines (104 loc) · 2.71 KB

README.md

File metadata and controls

129 lines (104 loc) · 2.71 KB

Домашно 3

Краен срок за предаване: 2016.03.31 23:59:59

Задача 1 - United Peopleses Number

Точки: 7

На стандартния вход се подава стринг с максимална дължина 12, който репрезентира ЕГН на човек в рамките на Република България.

Пояснение

Примерен вход:

6101047500

Изход:

1

Примерен вход:

1642292840

Изход:

1

Примерен вход:

1653292840

Изход:

0

Примерен вход:

5505046645

Изход:

0

Задача 2 - Eval

Точки: 12

На стандартният вход можете да получите унарна или бинарна операция във формата:

[argument1 (optional)][space][operation][space][argument2]

Example:
255 + 80
! 30000

Като поддържаните операции са следните:

  • +
  • ++
  • -
  • *
  • /
  • %
  • !

Забележка: всички операции изискват цели числа, за да бъдат изпълнени успешно, но не винаги на входа ще бъдат подавани числови стройности.

Поучавате операции до EOF, като за всяка операция трябва да върнете резултат или да изведете, че операцията не се поддържа. За целта създайте структура command_t, която съдържа операцията, аргументите и резултата.

Създайте функция int exec_cmd(struct command_t *cmd), която връща 0 ако операцията е изпълнена успешно или код за грешка. При успешно извършване на операцията изведете резултата от нея.

Пояснение: кодове за грешки с техните съобщения:

-1 - operation not supported
  12 mod 3
  1 && 0
-2 - invalid command argument count
  example: 15 -
  example: 8 ++ 9
-3 - invalid command arguments
  example: a + b
-4 - invalid input
  example: ba`ti domashnoto
-5 - invalid arithmetic operation
  example: 40 / 0
-42 - the answer to life, the universe and everything else
  ако резултата от операцията е 42

Примерен вход:

12 + 4
a + b
12 ++
3,14 + 2,71
++ 12

Изход:

16
invalid command arguments
invalid input
invalid command arguments
13