Зашифрованное слово не выводится, а появляется последовательность из одинаковых букв - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Нужно, чтобы программа зашифровала текст, введеный пользователем. У меня такой алгоритм, что берется буква из слова и заменяется на другую. Проблема в том, что зашифрованное слово не выводится, а появляется последовательность из одинаковых букв. Помогите это исправить
Листинг программы
  1. # include <stdio.h>
  2. # include <math.h>
  3. # include <conio.h>
  4. char str[80];
  5. char zam[2][26]={'a','b','c','d','i','f','g','h','i','j','k','l','m','n','o',
  6. 'p','q','r','s','t','u','v','w','x','y','z',
  7. 'z','y','x','w','v','u','t','s','r','q','p','o','n','m','l',
  8. 'k','j','i','h','g','f','i','d','c','b','a'};
  9. char rez[80];
  10. void main()
  11. {
  12. printf ("\n vvedite frazu: ");
  13. gets(str);
  14. {
  15. int i, k;
  16. for (i=0; i<strlen(str); i++)
  17. {
  18. for (k=0; k<26; k++)
  19. if (str[i]=zam[0][k])
  20. {
  21. str[i]=zam[1][k];
  22. }
  23. }
  24. printf ("%s", str);
  25. }
  26. }

Решение задачи: «Зашифрованное слово не выводится, а появляется последовательность из одинаковых букв»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. char ciphering(char input[80], char code[2][26], char result[80], int a, int b)
  4. {
  5.     int i, j = 0, k;
  6.     for (i = 0; i < strlen(input); i++){
  7.         if(input[i] == ' '){
  8.             result[j] = ' ';
  9.             j++;
  10.         }
  11.         else
  12.             for (k = 0; k < 26; k++){
  13.                 if (input[i]== code[a][k]){
  14.                     result[j] = code[b][k];
  15.                     j++;
  16.                 }
  17.             }
  18.     }
  19.     result[j] = '\0';
  20.     j = 0;
  21.     return result[80];
  22. }
  23. int main()
  24. {
  25.     char str[80], res[80], dec[80];
  26.     char sub[2][26]={{'a','b','c','d','e','f','g','h','i','j','k','l','m',
  27.                       'n','o','p','q','r','s','t','u','v','w','x','y','z'},
  28.                      {'&','=','|','!','+','>','$','*','@','1','~','7','`',
  29.                       ',','"','<','.','?',';','%',':','^','9','#','-','/'}};
  30.     printf ("Input text(only letters and spaces):\n ");
  31.     fgets(str, 80, stdin);
  32.     ciphering(str, sub, res, 0, 1);
  33.     puts(res);
  34.     ciphering(res, sub, dec, 1, 0);
  35.     puts(dec);
  36.     return 0;
  37. }

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы для работы с консолью и строками
  2. Определяется функция ciphering, которая принимает на вход:
    • введенный текст в виде массива символов input
    • таблицу с кодировкой в виде массива подстановок code
    • массив для хранения результата расшифровки result
    • два целочисленных параметра a и b, которые определяют номер строки и столбца в таблице подстановок соответственно
  3. Внутри функции происходит итерация по каждому символу входного текста
  4. Если текущий символ является пробелом, то в результат записывается пробел
  5. Если текущий символ не является пробелом, то происходит итерация по каждому столбцу в таблице подстановок
  6. Если символ в таблице подстановок совпадает с текущим символом, то в результат записывается символ из соответствующей строки таблицы подстановок
  7. Результат выводится на экран
  8. В функции main происходит считывание входного текста с клавиатуры
  9. Вызывается функция ciphering для шифрования введенного текста
  10. Выводится зашифрованный текст
  11. Вызывается функция ciphering для расшифровки зашифрованного текста
  12. Выводится расшифрованный текст

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы