201210281045


Задачи (рассматриваются решения на С, С++, C#, OOPascal, PHP, Python, JavaScript, Java. Использование сторонних библиотек, frameworks, runtime environments /mono, H.Boehm gc, etc.) по согласованию. 


Арифметика

0. A + B

Cложить два целых числа А и В.

Прочитать числа записанные в одну строку через пробел из файла i.txt. Вывести сумму чисел А и В, показав процесс сложения в столбик. Вывод на STDOUT.
 
Пример

  i.txt
   
  7801 85859

  STDOUT
      11 1
       7801 
    +
      85859
      -----
      93660


1. Возвести в квадрат целое число.

  - вывести на экран приглашение: ?>
  
  - проверить что введено положительное целое в десятичной системе. В случае ошибки повторить ввод числа.

  - Вывод на stdout

Пример

  125 ** 2 = 15625
  
  125 \ 10 = 12
  12 * 13 = 156
  "156" + "25" = "15625"


2. Обработка изображений

Формат файлов PBM был придуман Джефом Посканзером (Jef Poskanzer) в восьмидесятые годы 20-го столетия для передачи черно белых рисунков в тексте e-mail сообщений.

  P1
  # This is an example bitmap of the letter "J"
  6 10
  0 0 0 0 1 0
  0 0 0 0 1 0
  0 0 0 0 1 0
  0 0 0 0 1 0
  0 0 0 0 1 0
  0 0 0 0 1 0
  1 0 0 0 1 0
  0 1 1 1 0 0
  0 0 0 0 0 0
  0 0 0 0 0 0

Создать файл с рисунком слона в формате PBM. C помощью пакета ImageMagick (есть в свободном доступе и в моей сборке portables) конвертировать в PNG (или любой другой формат изображений, показываемый без установки дополнительного soft'а)

  000000000000000000000000001111000000000000000
  000000000011111000000001111111111000000000000
  000000001111111111111111111111111111100000000
  000000111111111111111111111111111111110000000
  000001111111111111111111111111111111111000000
  000001111111111111111111111111111111111100000
  000011111111111111111111111111111111111100000
  000011111111111111111111111111111111111110000
  000111111111111111111111111111111111111110000
  000111111111111111111111111111111111111111000
  000111111111111111111111111111111111111111000
  000111111111111111111111111111111111111111100
  000111111111111111111111111111111111111111100
  000111111111111111111111111111111110011111111
  000111111111111111111111111111000000000111111
  000111111111111111111111111111000000000111110
  001111111111111111111111111111000000000011110
  001111111111111111111111111111000000000011110
  001111111111111111100011111111000000000001110
  001011111111101100000011111111100000000001110
  001011111111000000000011111111100000000001111
  001111111110000000110011111111100000000000111
  001111111100000000110011111111100000000000111
  011111111100000000000011111111110000000000111
  011111111100000000000011111111111000000000111
  001111111110000000000011111011111000000000011
  001111111110000000000011110011111100000000011
  011110011110000000000011110001111100000000011
  011110011111000000000011100000111100000000011
  111110011111100000000111100000111111000000011
  111110011111100000000111110000111111000000011
  000000011111100000001111110000000000000000000


Задачи по дигитальной технике

03. Написать функцию, требующую ввести число в 2-ной системе. Если введенная информация не соответствует запрашиваемой, потребовать повторить ввод.

04. Написать функцию, требующую ввести число в 8-ной системе. Если введенная информация не соответствует запрашиваемой, потребовать повторить ввод.

05. Написать функцию, требующую ввести число в 10-ной системе. Если введенная информация не соответствует запрашиваемой, потребовать повторить ввод.

06. Написать функцию, требующую ввести число в 16-ной системе. Если введенная информация не соответствует запрашиваемой, потребовать повторить ввод. 

07. Написать программу, иллюстрирующую ручной перевод числа из 2-ной системы в 8-ную. Не ограничивать длину ввода менее чем 64-мя символами. Проверять ввод (см. задачи 0 - 3)

08. Написать программу, иллюстрирующую ручной перевод числа из 2-ной системы в 10-ную. Не ограничивать длину ввода менее чем 64-мя символами. Проверять ввод (см. задачи 0 - 3)

09. Написать программу, иллюстрирующую ручной перевод числа из 2-ной системы в 16-ную. Не ограничивать длину ввода менее чем 64-мя символами. Проверять ввод (см. задачи 0 - 3)

10. Написать программу, иллюстрирующую ручной перевод числа из 8-ной системы в 2-ную. Не ограничивать длину ввода менее чем 64-мя символами. Проверять ввод (см. задачи 0 - 3)
 
11. Написать программу, иллюстрирующую ручной перевод числа из 8-ной системы в 10-ную. Не ограничивать длину ввода менее чем 64-мя символами. Проверять ввод (см. задачи 0 - 3)

12. Написать программу, иллюстрирующую ручной перевод числа из 8-ной системы в 16-ную. Не ограничивать длину ввода менее чем 64-мя символами. Проверять ввод (см. задачи 0 - 3)

13. Написать программу, иллюстрирующую ручной перевод числа из 10-ной системы в 2-ную. Не ограничивать длину ввода менее чем 64-мя символами. Проверять ввод (см. задачи 0 - 3)

14. Написать программу, иллюстрирующую ручной перевод числа из 10-ной системы в 8-ную. Не ограничивать длину ввода менее чем 64-мя символами. Проверять ввод (см. задачи 0 - 3)

15. Написать программу, иллюстрирующую ручной перевод числа из 10-ной системы в 16-ную. Не ограничивать длину ввода менее чем 64-мя символами. Проверять ввод (см. задачи 0 - 3)

16. Написать программу, иллюстрирующую ручной перевод числа из 16-ной системы в 2-ную. Не ограничивать длину ввода менее чем 64-мя символами. Проверять ввод (см. задачи 0 - 3)

17. Написать программу, иллюстрирующую ручной перевод числа из 16-ной системы в 8-ную. Не ограничивать длину ввода менее чем 64-мя символами. Проверять ввод (см. задачи 0 - 3)

18. Написать программу, иллюстрирующую ручной перевод числа из 16-ной системы в 10-ную. Не ограничивать длину ввода менее чем 64-мя символами. Проверять ввод (см. задачи 0 - 3)

19. Koнтролировать ввод булевой функции.

20. Выводить таблицу истинности введенной функции.

21. Выводить карту Карно введенной функции.

22. Выводить условное обозначение AND, OR, NOT, NAND, NOR, XOR, XNOR, D элементы начиная с заданной позиции. Запрашивать и проверять корректность ввода.

   +--+    +--+    +--+    +--+    +--+    +--+    +--+    +--+
  -| &|   -| 1|    |  |   -| &|   -| 1|   -| ^|   -| ^|   -| D|
   |  +-   |  +-  -|  o-   |  o-   |  o-   |  +-   |  o-   |  +-
  -|  |   -|  |    |  |   -|  |   -|  |   -|  |   -|  |   ->  |
   +--+    +--+    +--+    +--+    +--+    +--+    +--+    +--+

23. Написать программу выводящую доказательство закона отражения ( x = x ) таблицей истинности.

24. Написать программу выводящую доказательство закона отрицания отрицания ( x = !!x ) таблицей истинности.

25. Написать программу выводящую доказательство закона симметрии ( если x = у то у = x ) таблицей истинности.

26. Написать программу выводящую доказательство транзитивного закона ( если x = у и у = z то x = z ) таблицей истинности.

27. Написать программу выводящую доказательство правила пустого множества для коньюнкции ( x * 0 = 0 )

28. Написать программу выводящую доказательство правила пустого множества для дизьюнкции ( x + 0 = x )

29. Написать программу выводящую доказательство правила универсального множества для коньюнкции ( x * 1 = x )

30. Написать программу выводящую доказательство правила универсального множества для дизьюнкции ( x + 1 = 1 )

31. Написать программу выводящую доказательство правила дополнения для коньюнкции ( x * !x = 0 )

32. Написать программу выводящую доказательство правила дополнения для дизьюнкции ( x + !x = 1 )

33. Написать программу выводящую доказательство закона идемпотентности для четырех коньюнкций ( x * x * x * x = X )

34. Написать программу выводящую доказательство закона идемпотентности для четырех дизьюнкций ( x + x + x + x = X )

35. Написать программу выводящую доказательство коммутативного закона для коньюнкции ( x * y = y * x )

36. Написать программу выводящую доказательство коммутативного закона для дизьюнкции ( x * y = y * x )

37. Написать программу выводящую доказательство ассоциативного закона для коньюнкции ( x * y ) * z = x * ( y * z )

38. Написать программу выводящую доказательство ассоциативного закона для дизьюнкции ( x + y ) + z = x + ( y + z )

39. Написать программу выводящую доказательство дистрибутивного закона для коньюнкции x * ( y + z ) = x * y + x * z

40. Написать программу выводящую доказательство дистрибутивного закона для дизьюнкции x + ( y * z ) = ( x + y ) * ( x + z )

41. Написать программу выводящую доказательство формулы D'Morgan-a для 2-х переменных для дизьюнкции

    !( a + b ) = !a * !b

42. Написать программу выводящую доказательство формулы D'Morgan-a для 3-х переменных для дизьюнкции

    !( a + b + c ) = !a * !b * !c

43. Написать программу выводящую доказательство формулы D'Morgan-a для 4-х переменных для дизьюнкции

    !( a + b + c + d ) = !a * !b * !c * !d

44. Написать программу выводящую доказательство формулы D'Morgan-a для 2-х переменных для коньюнкции

    !( a * b ) = !a + !b

45. Написать программу выводящую доказательство формулы D'Morgan-a для 3-х переменных для коньюнкции

    !( a * b * c ) = !a + !b + !c

46. Написать программу выводящую доказательство формулы D'Morgan-a для 4-х переменных для коньюнкции

    !( a * b * c * d ) = !a + !b + !c + !d


Задачи по шифрованию
--------------------

47. Шифр Юлия Цезаря. Считается одним из самым примитивных видов шифрования. Набор символов cостоящий из заглавных букв английского алфавита (26) циклически сдвигается вправо на целое число (число является секретом, может быть как положительным так и отрицательным).

Зашифровать фразу "HELLOWORLD". Вывести на экран в столбик с левым выравниванием, шрифт моноширинный:

  исходный алфавит
  сдвинутый алфавит
  исходное сообщение
  зашифрованное сообщение
  число - ключ (сдвиг)
  
Пример

  ABCDEFGHIJKLMNOPQRSTUVWXYZ
  YZABCDEFGHIJKLMNOPQRSTUVWX
  
  ADVENTURE
  YBTCLRSPC
  
  +2
  
  
48. Вывод азбукой Морзе.
 
49. Ввод азбукой Морзе. 

Программа 1. Вывести на экран азбукой Морзе текст "HELLOWORLD" (либо другой). Скопировать полученный текст в буфер обмена (clipboard) и ввести его, как исходные данные в программу 2.
 
Программа  2. Вывести прочтенное сообщение прописными буквами.

  A   · –             N   – ·
  B   – · · ·         O   – – –
  C   – · – ·         P   · – – ·
  D   – · ·           Q   – – · –
  E   ·               R   · – ·
  F   · · – ·         S   · · ·
  G   – – ·           T   –
  H   · · · ·         U   · · –
  I   · ·             V   · · · –
  J   · – – –         W   · – –
  K   – · –           X   – · · –
  L   · – · ·         Y   – · – –
  M   – –             Z   – – · ·


50. Ссылки на задачники по программированию
    ---------------------------------------

  http://nelus.tpt.edu.ee/2012/20121205083000(tasksf).txt
  http://ru.wikibooks.org/wiki/Ruby/Практикум
  http://ru.wikibooks.org/wiki/Ruby/Задачник
  http://ptaskbook.com/ru/tasks/index.php
  http://codeforces.ru/problemset
  
Решение задачи должно содержать

  - описание задачи (условие)
  - исходный код решения
  - ответ, выдаваемый предложенным кодом.

На защите (при получении оценки) необходимо понимать написанное.
