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

Palindrom C++

Hosting forpsi easy 1 pln
+1 głos
176 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 (246,010 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ź 106 wizyt
pytanie zadane 28 października 2020 w C i C++ przez Wolv63 Użytkownik (630 p.)
0 głosów
1 odpowiedź 124 wizyt
pytanie zadane 5 listopada w C i C++ przez Oluslolus Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 146 wizyt
pytanie zadane 29 października w C i C++ przez jorg123 Nowicjusz (120 p.)

92,089 zapytań

140,748 odpowiedzi

317,711 komentarzy

61,408 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia w koszyku, uzyskując rabat aż -50% (jeszcze tylko dziś 30.11 z okazji Black Week, a potem będzie to 30%) na bilety w wersji "Standard"! Więcej informacji na temat akademii znajdziecie tutaj. Dziękujemy Sekurakowi za tak fajną zniżkę dla Pasjonatów!

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 15% 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!

...