Программа выдает не то, что нужно
По условию нужно найти в строке симметричный фрагмент вида "abcdcba" длиной 7 и более символов (не содержащий пробелов) и возвращает указатель на его начало и длину. Вот мой код:
#include <iostream>
#include <string>
using namespace std;
int* f10(char* c, int& dlina)
{
int* index = NULL;
int k = 0, l = 1, ns, max = 0;
char previous = c[0];
for (char* p = &c[1]; *p != '\0'; ++p, l++)
{
char next = *p;
if (next != previous)
break;
else
k++;
if (k > 2 && k > max)
{
max = k - 1;
*index = l - max;
dlina = 2 * max + 1;
return index;
};
previous = next;
}
}
int main()
{
setlocale(0, "");
const int n = 500;
char c[n] = "salqwertrewqdz";
int dlina = 0;
int* x = f10(c, dlina);
if (x != NULL)
{
cout << "Индекс " << x << " Длина " << dlina;
}
else
{
printf("Не найдено > 7");
}
cin.get();
}
Выдает не то, что нужно: Индекс 00000061 Длина 0
Ответы (1 шт):
Автор решения: n1tr0xs
→ Ссылка
Вам нужно заменить int* index = NULL; на int* index = new int;. И.к. разименование nullptr ни к чему хорошему не приводит.