Мне нужно зашифровать алгоритм следующим образом
Algortihm:
Первоначально закодированная строка будет пустой.При заданной строке каждый раз выбирается средний символ строки и добавляется к закодированной строке.Т.е., если строка sanji
, будут выбраны первые n.EncodedStr будет "n"
, остальное сообщение - "saji"
, будет выбрано «a» (в случае четных букв будет выбрано самое левое среднее) EncodedStr будет «na», оставшееся сообщение - «sji». "Jбудет выбрано.Кодированная строка - "naj"
, оставшееся сообщение - "си"."s" будет выбрано.с последующим i.Final кодированным str будет "najsi"
, а для декодирования следует обратное.
Вот мой код для кодирования и декодирования:
char * encode(char *str) {
if (str == NULL)
return NULL;
int len = findLen(str);
int temp = len;
if (len == 1)
return str;
int k = 0;
int mid = 0,i;
int repl_chr = 'A';
char * en = (char*)malloc(sizeof(char)*len);
while (len > 0){
mid = len / 2;
en[k] = str[mid];
k++;
for (i = mid; i < len; i++){
str[i] = str[i + 1];
}
len--;
//memmove(&str[mid], &str[mid + 1], temp - mid);
}
printf("%s",en);
return en;
}
char* decode(char *str) {
if (str == NULL)
return NULL;
int len = findLen(str);
if (len == 1)
return str;
char * en = (char*)malloc(sizeof(char)*len);
return NULL;
}
int findLen(char *str){
int i;
for (i = 0; str[i] != '\0'; i++){}
return i;
}
У меня есть несколько ошибок в моем кодеКто-нибудь может мне помочь исправить ошибки?