Ошибка сегментации gcc - C (СИ)
Формулировка задачи:
Здравствуйте, уважаемы)
Пытаюсь реализовать шифр Плейфера.
Компилируется нормально, но при запуске выдает "Ошибка сегментирования".
Попробовал вывести отдельно массив mas... таже история... видимо проблема в нем.
Что я делаю не так?
Подскажите пожалуйста.
#include <stdio.h> #include <ctype.h> #include <string.h> int i,j,k,l,m,n; char mas[5][5] = {'N','I','K','O','L','A','Y','B','C','D','E','F','G','H','J','M','P','R','S','T','U','V','W','X','Z'}; char str[] = "BLABLABLABLABLABLA"; typedef struct { int i; int j; } t_id; t_id search(char z) { t_id ret; for (i=0;i<5;i++){ for (j=0;j<5;j++){ if (z==mas[i][j]) break; } } ret.i=i; ret.j=j; return ret; } void pleyfer() { t_id a,b; for(k=0;k<18;k++){ a = search(str[k]); k++; b = search(str[k]); if (a.i==b.i){ a.j=(a.j+1)%5; b.j=(b.j+1)%5; } if (a.j==b.j){ a.i=(a.i+1)%5; b.i=(b.i+1)%5; } if (a.i!=b.i && a.i!=b.i){ a.i = a.i^b.i; b.i = a.i^b.i; a.i = a.i^b.i; } printf("%s%s",mas[a.i][a.j],mas[b.i][b.j]); } } int main() { pleyfer(); return 0; }
Решение задачи: «Ошибка сегментации gcc»
textual
Листинг программы
printf("%c%c",mas[a.i][a.j],mas[b.i][b.j]);
Объяснение кода листинга программы
Код представлен в виде одного предложения и содержит следующие элементы:
printf
- функция для вывода информации на экран.%c%c
- спецификатор формата для вывода символов.mas[a.i][a.j]
- обращение к элементу массива по индексамa.i
иa.j
.mas[b.i][b.j]
- обращение к элементу массива по индексамb.i
иb.j
. Для более подробного объяснения необходимо знать контекст, в котором используется данный код.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д