GRY-Online.pl --> Archiwum Forum

Zwracam się o pomoc do programistów (C)

01.11.2006
20:12
smile
[1]

grish_em_all [ Hairless Cobra ]

Zwracam się o pomoc do programistów (C)

Mam do napisania niewielki programik w języku C, ale nie mam za chiny pomysłu jak go ugryźć. Program ma sprawdzić, czy podany wyraz jest palindromem (czyta się go tak samo od początku i od końca). Wiem, że to trzeba porównać pierwszą i ostanią literę wyrazu, a następnie "schodzić do środka". Ale jak to napisać? ;) Kolebie mi się między uszami, że to trzeba każdy znak odłożyć na stosie, a następnie za pomocą wskaźników odwoływać się do odpowiednich komórek pamięci i porównywać zawartość. Dawno w C nic nie pisałem i lekka skleroza mnie dopadła :D Dodam tylko, że nie szukam jelenia, który napisze to za mnie. Wystarczy, że ktoś wytłumaczy mi mechanizm, jak to zrobić, (ewentualnie stworzy samą procedurę porównywania poszczególnych znaków i wytłumaczy jak to działa), z samym programem już sobie poradzę

Dzięki z góry za wskazówki :)
Pozdrawiam, Grish

01.11.2006
20:54
[2]

Katane [ Useful Idiot ]

Masz wczytany wyraz do talbicy charow. Nastepnie w petli do drugiej tablicy zapisujesz ten wyraz od konca. Pozniej porownujesz efekty funkcja strcmp i voila.

02.11.2006
11:14
[3]

209458 [ Junior ]

Jeżeli słowo masz wczytane do tablicy, powiedzmy

char* s;

to wystarczy pętla przelatująca słowo do połowy:

int i;
int l;
l = strlen(s);
i = 0;
while ((2*i < l-1) && (s == s[l-i-1]) i++;
// trzeba sprawdzić czy wyszedł z pętli bo skończył, czy znalazł niepasujące litery
if (2*i < l-1) ‹nie ejst› else ‹palindrom›

02.11.2006
11:41
smile
[4]

grish_em_all [ Hairless Cobra ]

209458 --> działa, ogromne dzięki :) Nawet sam się połapałem jak to działa i dlaczego trza to zapisać tak a nie inaczej :D

Katane --> Tobie też dzięki za naprowadzenie :)

EOT

© 2000-2024 GRY-OnLine S.A.