Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Темы_курсовых по С и С#.doc
Скачиваний:
40
Добавлен:
27.03.2015
Размер:
492.54 Кб
Скачать

1

 

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

Программа должна поддерживать 2 режима работы:

1.      Интерактивный режим – следуя инструкция пользователя.

2.      Запуск из командной строки с 2 параметрами: 1) имя шифруемого файла, 2) имя файла с шифровальной таблицей.

 

«Электронные часы». Составить программу, имитирующую работу электронных часов, т.е. показывающую большими цифрами часы, минуты, секунды в реальном времени.

+2

 

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

 

«Жизнь». Игра моделирует жизнь поколений гипотетической колонии живых клеток, которые выживают, размножаются или погибают в соответствии со следующими правилами. Клетка выживает, если она имеет двух или трех соседей из восьми возможных (рис.1). если у клетки только один сосед или вовсе ни одного, она погибает в изоляции (рис.2). Если клетка имеет четырех или более соседей, она погибает от перенаселения (рис.3). В любой пустой позиции, у которой ровно три соседа, в следующем поколении появляется новая клетка (рис.4)

Х

Х

Х

Х

Х

Х

Х

Х

Х

Х

Х

Х


3

 

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

1)      Просмотр списка наименований книг (наименование включает название книги, имя автора, издательство и год издания).

2)      Редактирование, добавление и удаление наименований.

3)      Поиск книги.

4)      Хранение данных в файле.

Программа должна использовать динамическое распределение памяти.

 

«Поле чудес». Программа выбирает слово и рисует на экране столько прочерков, сколько букв в этом слове. Отгадать, какое слово загадано программой. В каждый ход играющий указывает одну букву. Если названа буква, входящая в состав слова, она подставляется вместо соответствующего прочерка. В противном случае играющий теряет одно очко. В начальный момент у играющего 15 очков. Все буквы нарисованы.

  

4

 

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

 

 

5

 

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

 

  1. «Ханойская башня». Доска имеет три колышка. На первом нанизано M дисков убывающего вверх диаметра. Расположить диски в том же порядке на другом колышке. Диски можно перекладывать с колышка на колышек по одному. Класть больший диск на меньший не разрешается. По запросу пользователя программа должна продемонстрировать правильную раскладку дисков.

6

 

Написать программу, позволяющую выполнять арифметические операции < +, -, *, /,  > с действительными числами любой разрядности (в десятичном представлении). Блок кода, выполняющий вычисления оформить в виде функции.

 

«Пятнадцать». На квадратном поле размером 4х4 с помощью датчика случайных чисел расставлены 15 фишек с номерами от 1 до 15. Имеется одна свободная позиция. Расставить фишки по возрастанию их номеров так, как показано на рисунках. Передвигать фишки можно только на соседнюю свободную позицию.

1

13

12

2

11

7

6

10

9

3

5

15

4

8

14

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

1

2

3

4

5

6

7

8

9

10

11

12

13

15

14

7

 

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

 

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

8

 

Написать программу, выполняющую поиск экстремума функции. f(x). F(x) – задается пользователем и может включать операции +-*= (скобки не используются).

1)Программа должна найти производную.

2)Методом дихотомии найти минимальное (макс.) значение ф-ии на заданном интервале.

3) Найти интеграл на заданном участке интегрирования.

 

«Коровы и быки». Программа выбирает с помощью датчика случайных чисел четырехзначное число с разными цифрами. Нужно угадать это число. На каждом шаге играющий называет четырехзначное число, а программа сообщает, сколько цифр числа угадано (быки) и сколько цифр угадано и стоит на нужном месте (коровы). Например, если программой загадано число 1294, а играющий назвал 1423, он получает ответ «одна корова, три быка».

+ 9

 

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

0-й байт содержит остаток от деления длины файла на 8,

1-й - остаток от деления числа битов, установленных в 1 на 127,

2-й и 3-й байт соответственно 1-й и последний байты файла, полученного шифровкой исходного методом перестановок (длина ключа не ограничена).

Шифр перестановки «Скитала»

 

10

 

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

1)      Ввод и редактирование инф-ии о студенте(Ф.И.О., дата рождения, группа).

2)      Ввод и редактирование информации  об успеваемости студента по основным дисциплинам (код дисциплины, дата выполнения контрольной работы. )

3)      Прогнозирование успеваемости студента по каждой из дисциплин (методом МНК) на заданном интервале времени.

Метод шифрующих таблиц. Двойная перестановка.

11

 

Написать программу, вычисляющую определитель матрицы размерности N*N. Программа должна удовлетворять следующим требованиям:

1)      исходные данные могут определяться как вводом с клавиатуры, так и из файла.

2)      Имя файла можно передавать программе в командной строке в качестве параметра.

3)      Размерность матрицы не ограничена.

 

Система шифрования Вижинера.

12

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

Метод шифрующих таблиц.

13

Матрица размера N*M определяет некоторый лабиринт: элемент 1 обозначает стену, а 0 определяет свободное место. В первой строке матрицы определяются входы x(i), а в последней выходы y(i), i=1,..,k, которые должны быть нулевыми элементами. Определить, можно ли:

а) провести k человек от входа x(i) до выхода y(i) соответственно, i=1,..,k, таким образом, чтобы каждое свободное место посещалось не более одного раза.

б) то же, но человека можно выводить чеpез любой из выходов. Примечание: Движение в лабиринте осуществляется только по вертикали или горизонтали.

Примечание. Для существования решения необходимо проводить людей от самого левого входа к самому левому выходу, от самого правого - к правому и т.д. Поэтому рассмотрим только случай б).

Основная стратегия человека, вошедшего в самый левый вход, состоит в прохождении лабиринта, используя наиболее левые свободные места лабиринта, т.е. он должен двигаться, держась правой рукой за "стенку" лабиринта. Этот процесс можно формализовать следующим образом. Находясь в очередной позиции лабиринта, он должен помнить, с какой стороны он пришел сюда (слева, справа, сверху, снизу), и, руководствуясь этой информацией, вобрать следующее наиболее предпочтительное направление в новую позицию (куда он может пойти и где еще не был). При этом удобно использовать стек, в вершине которого находятся координаты текущей позиции и направление, по которому в нее пришли. При этом все посещенные клетки метятся. Тогда, если в позицию попали сверху, то наилучшим направлением будет налево, затем вниз, направо, и наконец назад (вверх). Аналогично можно определить наилучшие направления для других случаев.

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

Аффинная система подстановок Цезаря

14

  1. Многочленс целыми коэффициентами можно представить в виде списка, причем, если, то соответствующее звено не включается в список. Например, представление многочлена:

Определить функции, которые строят многочлен R1 и R2 – сумму и произведение многочленов Q и Р. Предусмотреть ввод многочленов P и Q с клавиатуры и из файла.

Метод шифрующих таблиц. Двойная перестановка.

15

Составить программу для нахождения произвольного разбиения 20 студентов на 2 команды, численность которых отличается не более чем в 2 раза, если известно, что в любой команде должны быть студенты, обязательно знакомые друг с другом. Круг знакомств задается матрицей (20,20) с элементами A(ij)= 1,если i студент знаком с j, 0,иначе.

Шифр Гронсфельда.

16

На олимпиаду прибыло N человек. Некоторые из них знакомы между собой. Можно ли опосредованно перезнакомить их всех между собой? (Незнакомые люди могут познакомиться только через общего знакомого).

Система шифрования Вижинера.

17

Разработать проект, который позволяет сортировать заданный линейный массив целых чисел различными методами, например, методом линейной сортировки, пузырька, Шелла и др. Предусмотреть использование не менее трех методов.

Системы шифрования Цезаря.

18

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

Система Цезаря с ключевым словом.

19

Даны 2 текстовых файла f1 и f2. Файл f1 содержит произвольный текст. Слова в тексте разделены пробелами и знаками препинания. Файл f2 содержит не более 30 слов, которые разделены запятыми. Эти слова образуют пары: каждое второе является синонимом первого. Заменить в файле те слова, которые можно, их синонимами. Результат поместить в новый файл.

Двойной квадрат Уитстона.

20

Дан файл, содержащий текст на русском языке. В предложениях некоторые из слов записаны подряд. Получить в новом файле отредактированный текст, в котором удалены повторные вхождения слов в предложение.

21

Разработать программу для сжатия данных на основе метода Хаффмана.

Метод биграммного шифра Плейфейра.

22

Разработать программу для сжатия данных на основе метода Шеннона-Фано.

Метод шифрующих таблиц Трисемуса.

ОПИСАНИЕ МЕТОДОВ ШИФРОВАНИЯ

Шифр перестановки «Скитала»

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

Шифрование выполнялось следующим образом. На стержень цилиндрической формы, который назывался скитала, наматывали спиралью (виток к витку) полоску пергамента и писали на ней вдоль стержня несколько строк текста сообщения. Затем снимали со стержня полоску пергамента с написанным текстом. Буквы на этой полоске оказывались расположенными хаотично. Такой же результат можно получить, если буквы сообщения писать по кольцу не подряд, а через определенное число позиций до тех пор, пока не будет исчерпан весь текст.

Н

А

С

Т

У

П

А

Й

Т

Е

Рис.1.

Сообщение НАСТУПАЙТЕ при размещении его по окруж­ности стержня по три буквы дает шифртекст НУТАПЕСА_ТЙ

Для расшифрования такого шифртекста нужно не только знать правило шифрования, но и обладать ключом в виде стержня определенного диаметра. Зная только вид шифра, но не имея ключа, расшифровать сообщение было непросто. Шифр скитала многократно совершенствовался в последующие времена

Шифрующие таблицы

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

В качестве ключа в шифрующих таблицах используются'

• размер таблицы;

• слово или фраза, задающие перестановку,

• особенности структуры таблицы.

Одним из самых примитивных табличных шифров пере­становки является простая перестановка, для которой ключом служит размер таблицы. Этот метод шифрования сходен с шиф­ром скитала Например, сообщение

ТЕРМИНАТОР ПРИБЫВАЕТ СЕДЬМОГО В ПОЛНОЧЬ

записывается в таблицу поочередно по столбцам.

Результат за­полнения таблицы из 5 строк и 7 столбцов показан на рис. 2.

Т

Н

П

В

Е

Г

Л

Е

А

Р

А

д

О

Н

Р

Т

И

Е

Ь

В

О

М

О

Б

Т

М

П

Ч

И

Р

Ы

С

О

О

Ь

Рис 2. Заполнение таблицы из 5 строк и 7 столбцов

После заполнения таблицы текстом сообщения по столбцам для формирования шифртекста считывают содержимое таблицы по строкам. Если шифртекст записывать группами по пять букв, получается такое шифрованное сообщение

ТНПВЕ ГЛЕАР АДОНР ТИЕЬВ ОМОБТ МПЧИР ЫСООЬ

Естественно, отправитель и получатель сообщения долж­ны заранее условиться об общем ключе в виде размера таблицы Следует заметить, что объединение букв шифртекста в 5-буквенные группы не входит в ключ шифра и осуществляется для удобства записи несмыслового текста. При расшифровании дейст­вия выполняют в обратном порядке.

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

Применим в качестве ключа, например, слово ПЕЛИКАН, а текст сообщения возьмем из предыдущего примера. На рис. 3 показаны две таблицы, заполненные текстом сообщения и ключе­вым словом, при этом левая таблица соответствует заполнению до перестановки, а правая таблица- заполнению после пере­становки.

Ключ

П

Е

Л

И

К

А

Н

А

Е

И

К

Л

Н

П

7

2

5

3

4

1

6

1

2

3

4

5

6

7

Т

Н

П

В

Е

Г

Л

Г

Н

В

Е

П

Л

Т

Е

А

Р

А

Д

О

Н

0

А

А

Д

Р

Н

Е

Р

Т

И

Е

Ь

В

О

В

Т

Е

Ь

И

О

Р

М

О

Б

Т

М

П

Ч

П

0

Т

М

Б

Ч

М

И

Р

Ы

С

О

О

Ь

О

Р

С

О

Ы

Ь

И

До перестановки После перестановки

Рис 3. Таблицы, заполненные ключевым словом и текстом сообщения

В верхней строке левой таблицы записан ключ, а номера под буквами ключа определены в соответствии с естественным порядком соответствующих букв ключа в алфавите. Если бы в ключе встретились одинаковые буквы, они бы были понумерованы слева направо. В правой таблице столбцы переставлены в соот­ветствии с упорядоченными номерами букв ключа.

При считывании содержимого правой таблицы по строкам и записи шифртекста группами по пять букв получим шифрован­ное сообщение:

ГНВЕП ЛТООА ДРНЕВ ТЕЬИО РПОТМ БЧМОР СОЫЬИ

Для обеспечения дополнительной скрытности можно по­вторно зашифровать сообщение, которое уже прошло шифрова­ние. Такой метод шифрования называется двойной перестанов­кой. В случае двойной перестановки столбцов и строк таблицы перестановки определяются отдельно для столбцов и отдельно для строк. Сначала в таблицу записывается текст сообщения, а потом поочередно переставляются столбцы, а затем строки. При расшифровании порядок перестановок должен быть обратным.

Пример выполнения шифрования методом двойной пере­становки показан на рис. 4.

Если считывать шифртекст из пра­вой таблицы построчно блоками по четыре буквы, то получится следующее:

ТЮАЕ ООГМ РЛИП ОЬСВ

Ключом к шифру двойной перестановки служит последова­тельность номеров столбцов и номеров строк исходной таблицы (в нашем примере последовательности 4132 и 3142 соответственно).

4

1

3

2

1

2

3

4

1

2

3

4

3

П

Р

И

Л

3

Р

Л

И

П

1

Т

Ю

А

Е

1

Е

Т

А

Ю

1

Т

Ю

А

Е

2

О

О

Г

М

4

В

О

С

Ь

4

О

Ь

С

В

3

Р

Л

И

П

2

М

О

Г

О

2

О

О

Г

М

4

О

Ь

С

В

Исходная таблица Перестановка столбцов Перестановка строк

Рис. 4. Пример выполнения шифрования методом двойной перестановки

Число вариантов двойной перестановки быстро возрастает при увеличении размера таблицы:

• для таблицы 3х3 36 вариантов;

• для таблицы 4х4 576 вариантов;

• для таблицы 5х5 14400 вариантов.

Однако двойная перестановка не отличается высокой стой­костью и сравнительно просто "взламывается" при любом размере таблицы шифрования.