Informatică, întrebare adresată de sikesjack1, 8 ani în urmă

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;
}


boiustef: sper ca am fost explicit... :)))
boiustef: după am înţeles că în n ai pus numărul de cifre a numărului şi ai citit separat cifrele în vector. Nu cred că enunţul permite aşa citire...

Răspunsuri la întrebare

Răspuns de boiustef
0

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

Alte întrebări interesante