Informatică, întrebare adresată de Vendetta47, 9 ani în urmă

La metoda bulelor, mai exact la cel de-al doilea for, de ce este i<=n-1(i<n) ci nu i<=n? De ce nu se parcurg toate elementele sirului, ci se parcurge doar pana la penultimul?
#include

using namespace std;

int main()
{
int n, v[100], i , aux, sortat;
cin >> n;
for ( i=1; i<=n; i++)
cin >> v[i];
do
{
sortat=0;
for( i=1; i<=n-1; i++)
{
if( v[i]>v[i+1] )
{
aux=v[i];
v[i]=v[i+1];
v[i+1]=aux;
sortat=1;
}
}
}
while( sortat==1 );
for ( i=1; i<=n; i++ )
cout << v[i]<<" ";
return 0;
}

Răspunsuri la întrebare

Răspuns de Xcoder
0
Ca v[i+1], din if( v[i]>v[i+1] ), sa existe si sa fie in limitele vectorului, altfel, ar fi analizat v[i] cu 0

Ar fi analizat cu 0, deoarece v[i+1], adica v[n+1] nu are o valuare atribuita. Daca ai scoate acel -1, vectorul final nu ar mai include ultima valoare si pe prima pozitie ar fi 0

Exemplu:

pentru datele de intrare 
4 367 278 27 12, cu n-1, programul le ordoneaza cum trebuie. Cu n simplu, datele de iesire sunt: 0 12 27 278.


Vendetta47: Explica mai clar te rog. De ce ar fi analizat cu 0? De unde acel 0?
Xcoder: am editat, sper ca intelegi
Xcoder: ai inteles??
Vendetta47: nu
Xcoder: am dat tot ce am putut, scuze.
Vendetta47: nu ai skype?
Xcoder: se considera ca NU
Xcoder: e n-1, fiindca daca ar fi cu n, v[i+1] nu exista in vector, deci nu are sens
Vendetta47: cum nu exista
Xcoder: fiinca tu citesti vectorul pana la n, iar v[n+1] nu a fost citit, deci are valoarea 0
Alte întrebări interesante