Создание кратчайшего палиндрома - C (СИ)

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

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

Пишу лабораторную, в задании указано написать функцию которая из заданного слова делала бы наименьший палиндром. Функция создающая палиндром должна вернуть *char. У меня вроде бы все работает, но есть проблема с дописыванием куска палиндрома. Вот мой код
#include <stdio.h>
#include <string.h>
#include <conio.h>
 
char *makepal(char *word)
{
    int i, j, strsize, partpalst=-1;
    char *finalpal = "";
    strsize = strlen(word) - 1;

    for(i=0; i<=strsize; i++)
    {
        if(word[i]==word[strsize])
        {
            for(j=i; j<=strsize; j++)
            {
                if(word[j]!=word[strsize-j+i])
                    break;
                else
                {
                    if(j!=strsize-j+i)
                        partpalst = i;
                }
            }
            if(partpalst!=-1)
                break;
        }
    }

    switch (partpalst)
    {
    case -1:
        finalpal = word;
        for(i=strsize-1; i>=0; i--)
            finalpal += finalpal[i];
        break;
    case 0:
        finalpal = word;
        break;
    default:
        finalpal = word;
        j=0;
        for(i=strsize-1; i>partpalst; i--)
            finalpal +=word[i];
        break;
    }
 
    return finalpal;
}
 
int main()
{
    char *word = "flol", *result;
    result = makepal(word);
    printf("Palyndrom is: %s", result);
    getchar();
    return 0;
}
Если пытаться писать вот так, то получается ошибка, так как это строковая константа(я это в принципе предполагал). Как можно обойти данную ситуацию придерживаясь условия задания, что объявление функции должно иметь такой вид
char* makepal(const char *)

Решение задачи: «Создание кратчайшего палиндрома»

textual
Листинг программы
const char *word1 = "this is word1";
char *word2 = word1; //<- ошибка

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

  1. Объявляется переменная word1 типа const char* и инициализируется строкой this is word1.
  2. Объявляется переменная word2 типа char* и инициализируется указателем на word1.
  3. В данном коде больше ничего не происходит.

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


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

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

9   голосов , оценка 4.444 из 5
Похожие ответы