Wczytuj kolejne znaki stringa do dynamicznej tablicy charow. Nastepnie zapisz sobie pod jakas zmienna dlugosc tego stringa. Zalozmy, ze dlugosc ta zapiszesz pod zmienna int dlugosc. Wtedy mozesz zrobic cos takiego:
Kod: Zaznacz cały
int n=0;
while(n<dlugosc-1-n && strcmp(A[n],A[dlugosc-1-n])==0) n++;
Strcmp bedzie Ci porownywalo kolejne znaki Stringa lecac od jego poczatku i od konca, petla jest kontynuowana dopoki te znaki sa sobie rowne no i dopoki nie przelecielismy przez wszystkie znaki. Teraz wystarczy ifem sprawdzic, w ktorym miejscu petla sie zatrzymala. Jesli
n>=dlugosc-1-n
to znaczy, ze przelecielismy wszystkie znaki i nie znalezlismy takich dwoch, ktore nie bylyby sobie rowne czyli String jest palindromem, natomiast jesli petla zatrzymala sie wczesniej (czyli wtedy gdy
n<dlugosc-1-n
) to znaczy, ze ktores znaki sie nie zgadzaly czyli slowo nie jest palindromem.
Ostatnio zmieniony 30 kwie 2012, o 17:03 przez
Afish, łącznie zmieniany 1 raz.
Powód: Stosuj tagi icode