• 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
196 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 (253,120 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ź 112 wizyt
pytanie zadane 28 października 2020 w C i C++ przez Wolv63 Użytkownik (630 p.)
0 głosów
1 odpowiedź 42 wizyt
pytanie zadane 4 dni temu w C i C++ przez stachukk55 Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 108 wizyt
pytanie zadane 7 lutego w C i C++ przez sensei108 Nowicjusz (120 p.)

92,556 zapytań

141,404 odpowiedzi

319,561 komentarzy

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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich 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 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!

...