[C] Sprawdź, czy wyraz jest palindromem

1o2l3a
Użytkownik
Użytkownik
Posty: 2
Rejestracja: 30 kwie 2012, o 11:10
Płeć: Kobieta
Lokalizacja: Gdańsk

[C] Sprawdź, czy wyraz jest palindromem

Post autor: 1o2l3a »

Napisz program, który sprawdza, czy wczytany wyraz jest palindromem.
Program powinien zawierać dwie funkcje:
1. wczytanie elementów ciągu znakowego
2. sprawdzenie, czy ciąg jest palindromem i wyświetlenie odpowiedniego komunikatu.
W programie użyj funkcji:
1. void czyt wyraz(char A[ ], int );
2. void sprawdz wyraz(char A[ ], int n);
Dołącz bibliotekę string.h oraz wykorzystaj funkcję strlen(A) do obliczenia liczby znaków ciągu A.

POSZE POMOCY
Ostatnio zmieniony 30 kwie 2012, o 17:02 przez Afish, łącznie zmieniany 1 raz.
Powód: Taguj tematy, stosuj icode, zmień kodowanie znaków.
dexter90
Użytkownik
Użytkownik
Posty: 391
Rejestracja: 11 lis 2011, o 09:48
Płeć: Mężczyzna
Pomógł: 32 razy

[C] Sprawdź, czy wyraz jest palindromem

Post autor: dexter90 »

Ja to zawsze robiłem tak:

Implementowałem dynamiczną tablicę i do niej znak po znaku wczytywałem dany wyraz. Następnie przekopiowałem jej zawartość do drugiej tablicy i sprawdzałem czy ostatni element 2-giej tablicy jest taki sam jak pierwszej ( z pierwszym elementem ).
wawek91
Użytkownik
Użytkownik
Posty: 795
Rejestracja: 2 cze 2010, o 08:56
Płeć: Mężczyzna
Lokalizacja: Tarnów
Podziękował: 14 razy
Pomógł: 66 razy

[C] Sprawdź, czy wyraz jest palindromem

Post autor: wawek91 »

A po co druga tablica? Wystarczy lecieć w pętli i sprawdzać czy znak o indeksie 0 jest taki sam jak o indeksie n-1 itd aż do n/2.
1o2l3a
Użytkownik
Użytkownik
Posty: 2
Rejestracja: 30 kwie 2012, o 11:10
Płeć: Kobieta
Lokalizacja: Gdańsk

[C] Sprawdź, czy wyraz jest palindromem

Post autor: 1o2l3a »

a czy mogę prosić o kod ?? bo ja niestety nie jestem za dobra w tym.
wawek91
Użytkownik
Użytkownik
Posty: 795
Rejestracja: 2 cze 2010, o 08:56
Płeć: Mężczyzna
Lokalizacja: Tarnów
Podziękował: 14 razy
Pomógł: 66 razy

[C] Sprawdź, czy wyraz jest palindromem

Post autor: wawek91 »

Ode mnie od ręki nie dostaniesz. Po pierwsze nie powiedziałaś w jakim języku piszesz (po tablicy charów domyślam się że C tak?). Dobrze by było gdybyś sama spróbowała coś skrobnąć, choć jedną funkcję, bo na gotowcach nic sie nie nauczysz.
pawellogrd
Użytkownik
Użytkownik
Posty: 844
Rejestracja: 19 lis 2009, o 15:03
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 121 razy
Pomógł: 156 razy

[C] Sprawdź, czy wyraz jest palindromem

Post autor: pawellogrd »

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
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C] Sprawdź, czy wyraz jest palindromem

Post autor: Afish »

Po co męczyć się ze strcmp, skoro można po prostu porównywać pojedyncze znaki?
Pomijam już fakt, że powyższy kod nie zadziała.
pawellogrd
Użytkownik
Użytkownik
Posty: 844
Rejestracja: 19 lis 2009, o 15:03
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 121 razy
Pomógł: 156 razy

[C] Sprawdź, czy wyraz jest palindromem

Post autor: pawellogrd »

Afish to miało być tylko zakreślenie idei ogólnego rozwiązania, niekoniecznie kod, który autorka ma skopiować i wkleić. Ale fakt, strcmp tutaj nie będzie potrzebne
ODPOWIEDZ