Зашифрованное слово не выводится, а появляется последовательность из одинаковых букв - 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 для расшифровки зашифрованного текста
- Выводится расшифрованный текст
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д