Buna!
La acest algoritm a trebuit sa verifict daca un numar este palindrom.
Sunt curios, de ce punem conditia in al doilea for pana la n/2?
Mersi
#include
using namespace std;
int main()
{
int n,i,a[1001];
cin >>n;
bool palindrom=true;
for (i=0; i cin >>a[i];
⇒ for (i=0; i if (a[i]!=a[n-i-1])
{
palindrom=false;
break;
}
for (i=0; i
cout < cout <<"\n";
if (palindrom)
cout <<"DA";
else
cout <<"NU";
return 0;
}
Răspunsuri la întrebare
codul tău e trunchiat şi nu redă un tablou complet a algoritmului. Nu am înţeles dacă se dă un număr l-ai citit în n. Văd că folosesti vector, cred pentru cifrele numărului, dar nu văd unde ai generat acest vector.
Dar referitor la întrebarea ta, de ce se parcurge până la n/2, adică până la jumătatea vectorului...
fie vectorul tău are n=6 elemente numeratate, adic[ indexate de la 0 la 5
indicele i 0 1 2 3 4 5
vectorul 3 2 7 7 2 3
atunci n/2=6/2=3
for (i=0; i < n/2; ++i)
if (a[i] != a[n-i-1]) { palindrom=false; break;}
explicatie: pt i=0, n-i-1=6-0-1=5, deci se verifica cifrele de la capete.
pt i=1; n-i-1=6-1-1=4, deci se verifica a[1] cu a[4]
pt i=2, se verifica a[2] cu a[3]
stop, am terminat deoarece in for avem pt i<n/2, adica pt i<3
Astfel au fost verificate toate perechile egal departate de mijloc,
Daca se punea conditia in for i < n , atunci i continua valorile si trecea de jumatate si se vor verifica a doua oara perechile a[3] cu a[2]. a[4] cu a[1]. a[5] cu a[0], ce cred iti dai seama ca e pur si simplu in plus