Nu obții 100 de puncte sau ai nelămuriri în privința problemelor? Scrie-mi pe Instagram.
Ai găsit o greșeală, vrei să raportezi un utilizator sau vrei să comunici altceva? Folosește formularul de contact.
Vrei să ne transmiți o părere despre platformă? Folosește formularul de feedback.
Folosește următoarele shortcuturi pentru a naviga mai ușor pe platformă.
Meniu shortcuturi | ? |
Căutare probleme sau utilizatori | / |
Navigare printre rezultatele căutării | ↑, ↓ |
Meniu de contact și feedback | CTRL + Shift + F |
Ieșire din meniuri | Esc |
Setări editor | CTRL + Shift + S |
Schimbare stil editor | CTRL + Shift + E |
Șabloane de cod | CTRL + Shift + 1/2/3 |
Golire editor | CTRL + Shift + 4 |
Dându-se un șir de caractere s[]
, să se verifice dacă este sau nu palindrom.
Exemplu. Pentru șirul capac
, răspunsul este DA
, pe când pentru șirul copac
, răspunsul este NU
.
Un șir de caractere se numește este palindrom dacă este egal cu opusul său: primul caracter este egal cu ultimul, al doilea caracter este egal cu penultimul, și așa mai departe până la mijlocul șirului.
Vom parcurge șirul folosind o structură repetitivă cu doi indici: unul de la începutul șirului și unul de la final. Cât timp primul indice este mai mic decât al doilea indice, vom verifica dacă literele de pe cele două poziții coincid și vom incrementa primul indice (i++
) și decrementa al doilea indice (j--
). Dacă toate pozițiile coincid, atunci șirul este palindrom. În caz contrar, dacă există cel puțin o poziție care diferă, șirul nu este palindrom.
În exemplul de mai jos, când i
ajunge pe poziția 1
și j
pe poziția 3
, deoarece sunt literele diferite, șirul nu este palindrom.
Iată codul complet care determină dacă un șir citit de la tastatură este sau nu palindrom, folosind algoritmul descris mai sus. Am folosit funcția strlen()
pentru a determina lungimea șirului.
#include <iostream>
#include <cstring> //Biblioteca ce conține funcția strlen()
using namespace std;
int main()
{
//Declarăm și citim șirul s
char s[101];
cin.getline(s, 101);
//Verificăm dacă este palindrom
int amGasitGreseala = 0; //Asumăm că șirul este palindrom și că nu sunt greșeli
int i = 0, j = strlen(s) - 1; //Cei doi indici: primul începe de la 0, iar al doilea de la ultimul caracter
while(i <= j) { //Mergem doar până la mijlocul șirului
if(s[i] != s[j]) { //Am găsit o pereche de caractere diferite => șirul nu poate să fie palindrom
amGasitGreseala = 1;
break;
}
i++;
j--;
}
if(amGasitGreseala == 1) { //Am găsit o greșeală => afișăm NU
cout << "NU";
} else { //În caz contrar, șirul este palindrom => afișăm DA
cout << "DA";
}
return 0;
}