Ответы на вопрос:
не пользуйся одной таблицей, это не безопасно. : ) я советую создавать отдельную таблицу для каждой сессии.
извини, если код будет плохо читаться. этот сайт не поддерживает табуляцию и не умеет обрабатывать код.
/* 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
таблица даётся только на время сессии и теряет свой смысл после завершения программы. : )
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
Sladkayaaaaaa05.04.2023 12:35
-
korekhova1986super14.08.2022 09:34
-
fhtyf17.09.2020 12:03
-
sashunyakotova22.08.2021 22:48
-
Ddaannjjdb28.06.2020 17:03
-
MariaStredinina27.03.2023 11:48
-
dariapark128.05.2022 17:44
-
DIAAADA14.10.2020 17:08
-
ivannanikolaeva28.12.2020 08:57
-
МамкаДраконов19.10.2020 20:18
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.