Зашифрованное слово не выводится, а появляется последовательность из одинаковых букв - C (СИ)
Формулировка задачи:
Нужно, чтобы программа зашифровала текст, введеный пользователем.
У меня такой алгоритм, что берется буква из слова и заменяется на другую.
Проблема в том, что зашифрованное слово не выводится, а появляется последовательность из одинаковых букв.
Помогите это исправить
Листинг программы
- # include <stdio.h>
- # include <math.h>
- # include <conio.h>
- char str[80];
- char zam[2][26]={'a','b','c','d','i','f','g','h','i','j','k','l','m','n','o',
- 'p','q','r','s','t','u','v','w','x','y','z',
- 'z','y','x','w','v','u','t','s','r','q','p','o','n','m','l',
- 'k','j','i','h','g','f','i','d','c','b','a'};
- char rez[80];
- void main()
- {
- printf ("\n vvedite frazu: ");
- gets(str);
- {
- int i, k;
- for (i=0; i<strlen(str); i++)
- {
- for (k=0; k<26; k++)
- if (str[i]=zam[0][k])
- {
- str[i]=zam[1][k];
- }
- }
- printf ("%s", str);
- }
- }
Решение задачи: «Зашифрованное слово не выводится, а появляется последовательность из одинаковых букв»
textual
Листинг программы
- #include <stdio.h>
- #include <string.h>
- char ciphering(char input[80], char code[2][26], char result[80], int a, int b)
- {
- int i, j = 0, k;
- for (i = 0; i < strlen(input); i++){
- if(input[i] == ' '){
- result[j] = ' ';
- j++;
- }
- else
- for (k = 0; k < 26; k++){
- if (input[i]== code[a][k]){
- result[j] = code[b][k];
- j++;
- }
- }
- }
- result[j] = '\0';
- j = 0;
- return result[80];
- }
- int main()
- {
- char str[80], res[80], dec[80];
- char sub[2][26]={{'a','b','c','d','e','f','g','h','i','j','k','l','m',
- 'n','o','p','q','r','s','t','u','v','w','x','y','z'},
- {'&','=','|','!','+','>','$','*','@','1','~','7','`',
- ',','"','<','.','?',';','%',':','^','9','#','-','/'}};
- printf ("Input text(only letters and spaces):\n ");
- fgets(str, 80, stdin);
- ciphering(str, sub, res, 0, 1);
- puts(res);
- ciphering(res, sub, dec, 1, 0);
- puts(dec);
- return 0;
- }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы для работы с консолью и строками
- Определяется функция ciphering, которая принимает на вход:
- введенный текст в виде массива символов input
- таблицу с кодировкой в виде массива подстановок code
- массив для хранения результата расшифровки result
- два целочисленных параметра a и b, которые определяют номер строки и столбца в таблице подстановок соответственно
- Внутри функции происходит итерация по каждому символу входного текста
- Если текущий символ является пробелом, то в результат записывается пробел
- Если текущий символ не является пробелом, то происходит итерация по каждому столбцу в таблице подстановок
- Если символ в таблице подстановок совпадает с текущим символом, то в результат записывается символ из соответствующей строки таблицы подстановок
- Результат выводится на экран
- В функции main происходит считывание входного текста с клавиатуры
- Вызывается функция ciphering для шифрования введенного текста
- Выводится зашифрованный текст
- Вызывается функция ciphering для расшифровки зашифрованного текста
- Выводится расшифрованный текст
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д