не пользуйся одной таблицей, это не безопасно. : ) я советую создавать отдельную таблицу для каждой сессии.
извини, если код будет плохо читаться. этот сайт не поддерживает табуляцию и не умеет обрабатывать код.
/* only for windows */
#include < stdio.h>
#include < stdlib.h>
#include < stdbool.h>
#include < string.h>
#include < time.h>
#include < conio.h>
#include < windows.h>
#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 < alph_size; i++) {
/* for beauty */
if ((i % 5 == 0) & & (i ! = 0)) {
printf("\n");
}
genalph[i] = random_min + rand() % (random_max - random_min + 1);
/* that don't use goto */
if (i > 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 < (int) strlen(str); i++) {
bool coded = false;
int j;
for (j = 0; j < 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; з = > ; и = m; к = *;
л = ? ; м = v; н = m; о = s; п = };
р = & ; с = p; т = s; у = \; ф = $;
х = h; ц = ]; ч = g; ш = n; щ = 0;
ъ = y; ы = [; ь = i; э = 5; ю = i;
я = u; а = n; б = \; в = s; г = _;
д = k; е = 5; ж = #; з = c; и = g;
к = ~; л = < ; м = /; н = t; о = 6;
п = t; р = '; с = i; т = d; у = e;
ф = 0; х = o; ц = w; ч = q; ш = ';
щ = 6; ъ = h; ы = /; ь = h; э = a;
ю = [; я = '; = h; . = j; , = w;
! = }; ? = @;
закодированная строка: tspmshiqmuh~hpqmmhpqmswp}}sihm}hpqmqh`\^qshiqmuj
таблица даётся только на время сессии и теряет свой смысл после завершения программы. : )
Поделитесь своими знаниями, ответьте на вопрос:
Определите значение переменной а после выполнения алгоритма: а: =6 b: =1 b: =a/2*b a: =2*a+3*b