помогите сделать свою таблицу .Закодировать известие: Носит Сеня в сени сено,спать

Помогите сделать свою таблицу .Закодировать сообщение: Носит Сеня в сени сено,почивать на сене будет Сеня.

Задать свой вопрос
1 ответ

Не пользуйся одной таблицей, это не неопасно. :) Я рекомендую творить отдельную таблицу для каждой сессии.

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


/* only for windows */

include lt;stdio.hgt;

include lt;stdlib.hgt;

include lt;stdbool.hgt;

include lt;string.hgt;

include lt;time.hgt;

include lt;conio.hgt;

include lt;windows.hgt;

define ALPH_SIZE 67

define STR_SIZE_MAX 256

define RANDOM_MIN 33

define RANDOM_MAX 126

int main(void)

HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);

 

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

srand(time(NULL)); /* for "visible" random */

char str[STR_SIZE_MAX];

printf("Введите строчку: ");

scanf("%[^\n]s", str);

printf("\n");

/* encode only these symbols */

char alph[ALPH_SIZE] = "абвгежзиклмнопрстуфхцчшщъыьэюя" \

 "АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ .,!?";

 

char genAlph[ALPH_SIZE];

 

int i;

for (i = 0; i lt; ALPH_SIZE; i++)

 /* for beauty */

 if ((i % 5 == 0) amp;amp; (i != 0))  

  printf("\n");  

 

 

 genAlph[i] = RANDOM_MIN + rand() % (RANDOM_MAX - RANDOM_MIN + 1);

 

 /* that don't use goto */

 if (i gt; 0)

  if (genAlph[i - 1] == genAlph[i])

   while (genAlph[i - 1] == genAlph[i])

    genAlph[i] = RANDOM_MIN + rand() % (RANDOM_MAX - RANDOM_MIN + 1);

   

 

 

 

 SetConsoleTextAttribute(handle, 10 0); /* set symbol color to green */

 printf("%c", alph[i]);

 SetConsoleTextAttribute(handle, 7 0); /* set symbol color to white */

 

 printf(" = %c; ", genAlph[i]);

 

printf("\n\n");

 

char buf[STR_SIZE_MAX] = "";

 

for (i = 0; i lt; (int) strlen(str); i++)

 bool coded = false;

 

 int j;

 for (j = 0; j lt; ALPH_SIZE; j++)

  if (str[i] == alph[j])

   buf[i] = genAlph[j];

   coded = true;

 

 

 

 if (!coded)

  buf[i] = str[i];

 

 

printf("Закодированная строчка: %s", buf);

 

getch();

return 0;


Пример из программки:


Введите строчку: Носит Сеня в сени сено,дремать на сене будет Сеня.

а = ; б = ; в = ; г = 8; д = ^;

е = Q; ж = 6; з = gt;; и = m; к = *;

л = ?; м = V; н = m; о = S; п = ;

р = amp;; с = p; т = S; у = \; ф = ;

х = h; ц = ]; ч = g; ш = n; щ = 0;

ъ = Y; ы = [; ь = i; э = 5; ю = I;

я = u; А = n; Б = \; В = S; Г = _;

Д = k; Е = 5; Ж = ; З = c; И = g;

К = ; Л = lt;; М = /; Н = t; О = 6;

П = t; Р = '; С = i; Т = D; У = E;

Ф = 0; Х = O; Ц = w; Ч = Q; Ш = ';

Щ = 6; Ъ = h; Ы = /; Ь = h; Э = a;

Ю = [; Я = ';   = H; . = J; , = w;

! = ; ? = @;

Закодированная строчка: tSpmSHiQmuHHpQmmHpQmSwpSiHmHpQmQH\^QSHiQmuJ


Таблица даётся только на время сессии и утрачивает собственный смысл после окончания программки. :)

Алексей Фасман
Пропустил буковку 'д' в определении массива. Добавь, если пригодится.
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт