• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Palindrom C++

Object Storage Arubacloud
+1 głos
203 wizyt
pytanie zadane 11 maja 2021 w C i C++ przez Malarz Nowicjusz (180 p.)

Cześć.

Nie rozumiem do końca procesu działania tej funkcji. Szczególnie w ostatniej linijce. Wiem że działa poprawnie oraz sprawdza czy napis jest palindromem.

bool czy_palindrom(const string napis)
{
        bool X=true;
        for(int i=0, j=napis.length()-1; i<j; i++, j--)
        if(napis[i]!=napis[j])
        {X=false; break;}
        return (X==true) ?  true :  false;}

 

1
komentarz 11 maja 2021 przez VBService Ekspert (254,570 p.)
edycja 11 maja 2021 przez VBService

Można zapisać.  wink

on-line

bool czy_palindrom(const std::string napis)
{
    for (int i=0, j=napis.length()-1; i<j; i++, j--)
        if (napis[i]!=napis[j]) return false;
    return true;
}

1 odpowiedź

+2 głosów
odpowiedź 11 maja 2021 przez Jakub 0 Pasjonat (23,120 p.)
edycja 11 maja 2021 przez Jakub 0

Nie rozumiem do końca procesu działania tej funkcji

Funkcja ta, sprawdza czy napis czytany od przodu, jest taki sam jak czytany od tył. "Iterujesz" przez tekst od początku do końca, i odwrotnie. Kończysz gdy "wskaźniki" i,j się miną. Za każdym razem sprawdzasz, czy odpowiadające sobie po dwóch stronach wartości się różnią:

if(napis[i]!=napis[j])

Jeśli tak, to znaczy że tekst nie jest palindromem. Kończysz pętle, i ustawiasz zmienną X na false. Gdy pętla skończy się "naturalnie", to wartość true pozostanie.

Szczególnie w ostatniej linijce

Operator ?: to skrócony zapis instrukcji warunkowej, zapis:

result = condition ? value1 : value2;

jest równoważny z:

if (condition)
    result = value1;
else
    result = value2;

U Ciebie, jeśli X to true, zwracasz true (liczba jest palindromem), w przeciwnym razie zwracasz false.

Podobne pytania

0 głosów
1 odpowiedź 117 wizyt
pytanie zadane 28 października 2020 w C i C++ przez Wolv63 Użytkownik (630 p.)
0 głosów
1 odpowiedź 66 wizyt
pytanie zadane 15 kwietnia w C i C++ przez stachukk55 Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 129 wizyt
pytanie zadane 7 lutego w C i C++ przez sensei108 Nowicjusz (120 p.)

92,686 zapytań

141,596 odpowiedzi

320,081 komentarzy

62,046 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...