"Шифр Цезаря" (Код Цезаря) на Си.


на C# (49 руб) здесь ...

программа Шифр Код Цезаря на С# почти бесплатно

на Visual Basic 6 (49 руб) здесь ...

программа Шифр Код Цезаря на Visual Basic 6.0 бесплатно

на Delphi 7 (49 руб) здесь ...

программа Шифр Код Цезаря на Delphi 7 бесплатно


Задание:

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

Допустимые символы – латинские буквы «a»-«z», «A»-«Z», русские буквы «а»-«я», «А»-«Я», пробел. Ввод строки заканчивается вводом символа с кодом 13 ASCII таблицы (CARRIAGE RETURN – клавиша Enter).

Если программа использует для преобразования строку из файла, то ею должен быть создан файл с именем <имя файла>.out.txt, в котором будет записано преобразованная строка.

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

Если в считанной из файла строке присутствуют символы с кодами ASCII 0-31, то программа должна их предварительно удалить (не из файла, а из анализируемой в программе строки) перед преобразованием.

Если программе не было передано ни одного параметра, то она должна вывести на дисплей сообщение «Choose string source: 1 – keyboard, 2 – file.» и ожидать ввода цифры 1 или 2 со стандартного устройства ввода (клавиатуры).

Программа должна закодировать входную строку методом моноалфавитной подстановки, используя шифр Цезаря. К коду ASCII каждой буквы английского алфавита «a»-«z» ,«A»-«Z» и русского алфавита «а»-«я», «А»-«Я» прибавить 3. Если получившийся код таблицы ASCII выходит за пределы указанных наборов символов, то считать, что за последним символом набора снова следует первый (цикл по кольцу). По получившимся кодам записать преобразованную строчку.

Пример вызова программы с параметром: Prog1.exe my.txt

Решение:

Определим как константы пять наборов символов:

const char EN[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
const char en[]="abcdefghijklmnopqrstuvwxyz";
const char pun[]=". !_;()-+%=";
const char RUW[]="АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
const char ruw[]="абвгдеёжзийклмнопрстуфхцчшщъыьэюя";

Собственно функция «код Цезаря» будет выглядеть следующим образом:

char CezarCod(const char* aSet, char ch, int sm)
{ unsigned short p=0, len=strlen(aSet);
   char *nch=strchr(aSet,ch); //указатель на исходный символ в наборе

   if(nch) p=nch-aSet; //порядковый номер исходного символа в наборе
   else return '\0'; //значит символ не из этого набора

   //получение правильного смещения которое >=0 и меньше len строки набора
   if(sm>0) while(sm>=len) sm-=len;
   else if(sm<0) while(sm<0) sm+=len;
   if(sm==0) return ch; //возвращаем указатель на тот же символ
   else { p+=sm;
         p=(p>len) ? p-len : p ; //всегда положительно
       }
   return aSet[p]; // символ из набора после смещения.
}

Как видим, если символ принадлежит набору (строке в первом параметре), то возвращается указатель на новый символ этого набора в зависимости от величины смещения (отрицательного или положительного – не важно). Набор как бы закольцован (за пределы набора выйти нельзя). Функция возвращает '\0' если символ не принадлежит набору.

Использовать функцию в программе – дело техники…
Что-то вроде:
char newCh = CezarCod (RUW, ch, 3); if(newCh) return newCh;

скачать exe-файл для тестирования,


Условия получения кода?    Показать?


Другие примеры на тему «Шифрование, Кодирование и/или Сжатие Информации»

Другие примеры на языках «C»,«C++»,«C#»

Другие примеры на языке «Delphi»

Другие примеры на языке «Visual Basic»




Если на этой странице не нашлось того, что Вы так искали...

         Не расстраивайтесь, не все потеряно... Смело щелкайте...

исходный код на заказ. orenstudent.ru Автоматизация документов MS Office. orenstudent.ru исходный код на заказ. orenstudent.ru Помогите найти и устранить ошибку в исходном коде программы. orenstudent.ru Skype-консультирование по программированию
Скайп-консультации

Акция !!!
Весь код по 49 руб


требуются
школьники!


и СТУДЕНТЫ!
Кому не плевать
на деньги!
Сайт помощи студентам по программированию и информатике