Стани премиум член и добиј попуст на 2000+ производи и куп други бенефити!

Проблем со задаца во Ц!

???

read-only
18 декември 2009
9
0
Јас имам пак проблем со задачва
Следнава програмава е да определи дали внесен збор е палиндром и ок е, али треба да бара и во дадениот збор дали има и подзбор кој е исто така палиндром. Ве молам помогнетеми многу ми е итно а незнам како да го направам тоа да бара подзбор палиндром.
Ви благодарам однапред.

#include <stdio.h>
#include <string.h>

unsigned int get_string_length(const char *string)
{
int i;
int string_length = 0;

for (i = 0; string != 0 && string != '\n'; ++i)
++string_length;
return string_length;
}


void reverse(const char *in_string, char *rev_string)
{
int i, j;
unsigned int length;

length = get_string_length(in_string);

for (i = length-1, j = 0; i >= 0; --i, ++j)
rev_string[j] = in_string;

rev_string[j] = 0;
}

int main()
{
const int max_size = 100;
int string_length = 0;

char string[max_size];
char reverse_string[max_size];

printf("\nPlease enter input string: ");

fgets(string, max_size, stdin);


string_length = get_string_length(string);
string[string_length] = 0;
reverse(string, reverse_string);

if (!strcmp(string, reverse_string)) {
printf("\nEntered string = %s, reversed string = %s."
"\n%s = %s, hence %s is a palindrome.\n",
string, reverse_string, string, reverse_string, string);
} else {
printf("\nEntered string = %s, reversed string = %s."
"\n%s != %s, hence %s is not a palindrome.\n",
string, reverse_string, string, reverse_string, string);
}

system("PAUSE");
return 0;
}
 

eldiablo

Баниран/a
21 октомври 2008
820
48
Да имаме учено рекурзија.
Ако знаеш како треба да се реши те молам напишими ја ептен ми треба :(

Прво, зошто кодот си го ископирал од некој сајт? Почни сам пишувај нешто.

Второ, не мора да се реши со рекурзија (и онака во општ случај рекурзијата поспоро работи него циклусите)

Користам рекурзија само кога имам рекуренти формули. Инаку не...

Пример: zracecarldzd

За да најдеш подзбор дали е палиндром, во случајов:

за 'z' ќе бараш иста буква, и ќе ја најдеш на 10 позиција.

Сега со for циклус ќе испитуваш двете крајни букви дали се еднакви.

'r' не е еднаква со 'd', па тука прекунува for циклусот.

Продолжуваш со 'r'. Гледаш дека има 'r' на 7-ма позиција.

Па ја повторуваш истата процедура 'a' со 'a', 'c' со 'c' се додека не дојдеш на средина, т.е 7/2 = 3, т.е додека циклусот не завртил 3 пати или пак ако најде различна буква ќе прекине.

Ако продолжиш понатаму ќе најдеш дека и aceca е палиндром и дека cec е палиндром. Во случајов и dzd е палиндром.

Поздрав и почни да пишуваш нешто.
 

B^nDIT

user
6 февруари 2010
1.124
315
Прво, зошто кодот си го ископирал од некој сајт? Почни сам пишувај нешто.

Второ, не мора да се реши со рекурзија (и онака во општ случај рекурзијата поспоро работи него циклусите)

Користам рекурзија само кога имам рекуренти формули. Инаку не...

Пример: zracecarldzd

За да најдеш подзбор дали е палиндром, во случајов:

за 'z' ќе бараш иста буква, и ќе ја најдеш на 10 позиција.

Сега со for циклус ќе испитуваш двете крајни букви дали се еднакви.

'r' не е еднаква со 'd', па тука прекунува for циклусот.

Продолжуваш со 'r'. Гледаш дека има 'r' на 7-ма позиција.

Па ја повторуваш истата процедура 'a' со 'a', 'c' со 'c' се додека не дојдеш на средина, т.е 7/2 = 3, т.е додека циклусот не завртил 3 пати или пак ако најде различна буква ќе прекине.

Ако продолжиш понатаму ќе најдеш дека и aceca е палиндром и дека cec е палиндром. Во случајов и dzd е палиндром.

Поздрав и почни да пишуваш нешто.
BUMP.

Ич не ме бива во алгоритми али со твоја помош...

Наместо него , мене многу ми помогна ова.Споредував дали:
секоја буква по ред=големината на стрингот-буквата

Фала ти многу.
 
членови онлајн
мислења
теми
членови

Нови мислења

Последни теми

Последни огласи

IT.mk/market понуда

Бесплатна достава на 3000 производи
На врв Дно