KWALIFIKACJA INF2 + INF3 - STYCZEŃ 2013

PYTANIE NR 36.
Przedstawiony w ramce program sprawdza czy
Ilustracja przedstawia fragment kodu w języku Pascal, który jest używany do sprawdzania, czy wprowadzony ciąg znaków jest
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Palindrom to napis, który czytany od początku i od końca jest taki sam. Program sprawdzający palindrom zwykle porównuje kolejne znaki z obu końców łańcucha (lub porównuje napis z jego odwróconą wersją). Dlatego poprawna jest odpowiedź o sprawdzaniu, czy wprowadzony ciąg znaków jest palindromem.

Pełne wyjaśnienie:

Palindrom to ciąg znaków, który po odczytaniu od lewej do prawej i od prawej do lewej ma identyczną postać (np. "kajak", "anna"). Algorytm sprawdzający palindrom musi więc potwierdzić, że dla wszystkich pozycji i zachodzi równość znaku na pozycji i oraz znaku na pozycji symetrycznej od końca.

W praktyce spotyka się dwa typowe podejścia:

  • Porównywanie symetryczne: iteracja od początku do środka napisu i porównywanie znaków na pozycjach i oraz n-1-i. Jeśli pojawi się choć jedna różnica, wynik jest negatywny.
  • Odwrócenie napisu: utworzenie drugiego łańcucha będącego odwróceniem wejścia i porównanie, czy oba napisy są równe.

Odpowiedź "wprowadzono odpowiednią długość ciągu znaków" opisuje walidację (np. minimum/maksimum znaków), a nie własność palindromu. Program do palindromu może używać długości napisu pomocniczo (np. do wyznaczenia środka), ale celem nie jest sama kontrola długości.

Odpowiedź "liczba wprowadzonych znaków jest parzysta" również nie oddaje istoty zadania. Palindrom może mieć długość parzystą (np. "abba") lub nieparzystą (np. "kajak"). Parzystość nie jest warunkiem koniecznym ani wystarczającym.

Odpowiedź "ciąg znaków jest typu całkowitego" jest błędna pojęciowo: ciąg znaków (string) nie jest liczbą całkowitą. Nawet jeśli program czasem konwertuje dane, to samo sprawdzanie palindromu dotyczy porównywania znaków, a nie ustalania typu całkowitego.

Wskazówka egzaminacyjna: aby rozpoznać palindrom w kodzie, szukaj porównań znaków z "przeciwległych" stron napisu, warunku przerwania po wykryciu różnicy oraz ewentualnego porównania z odwróconym napisem.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Palindrom to napis (ciąg znaków), który czytany od lewej do prawej i od prawej do lewej jest identyczny. W programowaniu sprawdza się to przez porównywanie znaków z obu końców napisu lub przez porównanie napisu z jego odwróconą wersją.
Najczęściej iteruje od początku do środka i porównuje znak z pozycji i ze znakiem symetrycznym od końca. Gdy znajdzie różnicę, kończy sprawdzanie i zwraca wynik negatywny. Jeśli nie ma różnic, napis jest palindromem.
Parzystość długości nie przesądza o palindromie. Napis o parzystej długości może nie być palindromem (np. "abca"), a palindrom może mieć długość nieparzystą (np. "kajak"). Liczy się równość znaków w parach symetrycznych, nie sama długość.
Tak. W palindromie o nieparzystej długości środkowy znak nie ma pary i nie wpływa na wynik, bo porównuje się tylko znaki po obu stronach środka. Przykład: "kajak" — skrajne pary są równe, a środkowe "j" pozostaje bez porównania.
Warto sprawdzić: pusty napis, jeden znak, dwa znaki (równe i różne), palindrom parzysty ("abba"), palindrom nieparzysty ("kajak"), napis z dużymi literami oraz napis ze spacjami. To pomaga wykryć błędy w indeksowaniu i warunkach pętli.
Częsty błąd to zły zakres pętli (np. iteracja do końca zamiast do połowy) albo błędne wyznaczenie indeksu znaku od końca. Skutkiem są błędy poza zakresem lub fałszywe wyniki. Pomaga zapis: porównuj pozycje i i n-1-i.
Sprawdzanie długości zwykle kończy się prostym warunkiem typu "jeśli długość < min lub > max". Palindrom natomiast zawiera porównywanie znaków (dwie pozycje) w pętli albo tworzenie odwróconego napisu i porównanie równości dwóch łańcuchów.
Nie wprost. Palindrom jest własnością ciągu znaków. Liczbę można potraktować jako tekst (np. "12321"), ale wtedy i tak sprawdzasz palindrom na reprezentacji tekstowej. Sam typ int nie jest "ciągiem znaków" i nie sprawdza się go tak samo.
Potrzebne są: definicja palindromu, indeksowanie znaków w napisie, długość łańcucha, pętle (for/while) oraz instrukcje warunkowe. Dodatkowo przydaje się rozumienie, kiedy pętlę można zakończyć wcześniej po znalezieniu pierwszej różnicy.
Szukaj porównywania znaków z obu końców (dwa indeksy: rosnący i malejący) albo porównania napisu z jego odwróceniem. Charakterystyczne jest dojście tylko do środka oraz ustawianie flagi wyniku na fałsz po wykryciu różnicy.
info

Około 41% zdających odpowiada poprawnie na to pytanie. trudne

Eksperci podkreślają: "Palindrom to napis, który czytany od początku i od końca jest taki sam."

Źródła:

  • Wikipedia (PL): "Palindrom" — definicja i przykłady, https://pl.wikipedia.org/wiki/Palindrom (dostęp: 2026-03-01)
  • MDN Web Docs: "String" — podstawowe pojęcia i operacje na napisach, https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String (dostęp: 2026-03-01)
  • cppreference.com: "std::reverse" — odwracanie sekwencji (częsty element rozwiązań palindromu), https://en.cppreference.com/w/cpp/algorithm/reverse (dostęp: 2026-03-01)

Materiały:

  • Dokumentacja języka używanego na zajęciach (sekcja: string/łańcuchy znaków)
  • Materiały o podstawowych algorytmach na napisach (palindrom, odwracanie, wyszukiwanie)
  • Zadania praktyczne z arkuszy egzaminacyjnych dotyczące analizy kodu

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego