Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на языке Си Часть вторая book-c2.doc
Скачиваний:
51
Добавлен:
15.03.2015
Размер:
838.66 Кб
Скачать

Винтовая лестница

Программа должна имитировать вид возникающий при подъеме по вин­товой лестнице. Необходимо изобразить четверть круга ступенек. Коорди­наты вычисляются через функции sin(...) и cos(...). Скорость можно значительно поднять, если не вычислять их каждый раз заново, а запомнить в массиве. Причем достаточно помнить таблицу только одной функции, на интервале [0..pi/2]. Другую всегда можно получить sin(x)=cos(pi-x).

- 23 -

Простейшие системы шифрования Шифр Цезаря

Шифр Цезаря один из наиболее древних известных нам систем шифрования. В эпоху расцвета Рима, чтобы управлять наместниками в многочисленных провинциях, шифрованная связь для римских органов власти стала жизненно необходимой. Изобретение шифра связано с именем Юлия Цезаря. В этом шифре каждая буква шифровки заменяется определенной по счету от нее в алфавите. Например, послание сенату VENI VIDI VICI, то есть ПРИШЕЛ УВИДЕЛ ПОБЕДИЛ, сделанное самим Юлием Цезарем после однодневной войны с понтийским царем Фарнаком, выглядело бы шифровкой SBKF SFAF SFZF, если выбрать смещение в четыре буквы.

Алгоритм шифрования:

  1. Прочитать строку st. Определить ее длинуn=strlen(st).

  2. for(i=0;i<n;i++)

{ st[i]+=Key ; if(st[i]>’я’) st[i]=st[i]-‘я’+’A’ ; }

Шифр Виженера

Более надежный шифр замены создан дипломатом XVI века Блезом Виженером, который развивал и совершенствовал криптографические системы. Шифр Виженера является модификацией шифра Цезаря. Для каждого символа сообщения используется различная величина смещения. В качестве ключа удобно использовать простое для запоминания слово. Внешне криптограмма выглядит похожей на шифр Цезаря, но смещение задается для каждой буквы сообщения номером в алфавите соответствующей буквы ключа. Если ключ короче сообщения, то его повторяют циклически. Например:

сообщение СОВЕРШЕННО СЕКРЕТНО

ключ ПРИВЕТ

шифровка БЯЛИЦЛХЮЦС ДХЫЩИШАЮ

Алгоритм шифрования:

  1. Задать ключ Key, определить его длинуn_key.

  2. Прочитать строку st. Определить ее длинуn=strlen(st). j=0 ;

  3. for(i=0;i<n;i++)

{

st[i]+=Key[j] ; j++ ;

if(j>n_key) j=0 ;

if(st[i]>’я’) st[i]=st[i]-‘я’+’A’ ;

}

- 22 -

Шейкерная сортировка

В основе алгоритма сортировка по методу пузырька с переменным направлением просмотра.

<Флаг перестановки>=1

while(<Флаг перестановки>)

{

<Флаг перестановки>=0

for(i=1;i<N;i++)

<Сравнениеa[i-1] <a[i]>если требуется перестановка:

{

<Перестановка местамиa[i] иa[i-1]>

<Флаг перестановки>=1

}

for(i=N-1;i>0;i--)

<Сравнениеa[i] >a[i-1]>если требуется перестановка:

{

<Перестановка местамиa[i] иa[i-1]>

<Флаг перестановки>=1

}

}

Пример:

0: 37 76 23 98 35 40

1а: 34 23 76 35 40 98

1б: 23 34 35 40 76 98

На проходе 1а числа с меньшим весом выталкиваются в перед, на проходе 1б числа с большим весом опускаются в конец массива. Сортировка идет значительно быстрее.