- Insert:
- Codice:
int insertVettore(vettore v, int &r, int pos, int elem)
{
int i, exit;
if(r+1<N && pos>=0 && pos<r)
{
for(i=r;i>pos;i--)
v[i]=v[i-1];
v[pos]=elem;
r++;
exit=1;
}
else
exit=0;
return exit;
}
che ho modificato in
- Codice:
int insertVettore(vettore v, int &r, int pos, int elem)
{
int i, exit;
if(r+1<=N && pos>=0 && pos<=r)
{
for(i=r;i>pos;i--)
v[i]=v[i-1];
v[pos]=elem;
r++;
exit=1;
}
else
exit=0;
return exit;
}
Ho modificato:
- la condizione dell'if, scrivendo r+1<=N (perché posso aggiungere un elemento anche quando r=N-1) e pos<=r (perché così posso aggiungere un elemento anche quando pos=r)
- Delete:
(Qui credo che ci sia proprio un errore)
- Codice:
int deleteVettore(vettore v, int &r, int pos)
{
int i, exit;
if(r-1>0 && pos>=0 && pos<r)
{
for(i=pos;i<r;i++)
v[i]=v[i+1];
r--;
exit=1;
}
else
exit=0;
return exit;
}
che ho modificato in
- Codice:
int deleteVettore(vettore v, int &r, int pos)
{
int i, exit;
if(r-1>=0 && pos>=0 && pos<r)
{
for(i=pos;i<r-1;i++)
v[i]=v[i+1];
r--;
exit=1;
}
else
exit=0;
return exit;
}
Ho modificato:
- la condizione dell'if, scrivendo r-1>=0,perché posso cancellare un elemento anche se r=1: non potrei se fosse 0. Ottengo un vettore con riempimento r=0, ma non credo sia un problema.
- la condizione di terminazione del for, scrivendo i<r-1, perché se i=r-1, eseguo v[r-1]=v[r]: nel caso migliore potevo risparmiare quest'ultima iterazione, ma se r=N, vado ad accedere a un'area di memoria che non è assegnata all'array, no?
Eppure non ottengo alcun errore a runtime, e in v[N-1] viene copiato 0 (sempre?)
Analogamente, se provo a scrivere su v[N] non ottengo alcun errore, né su v[N+1], ma solo per valori molto maggiori di N (circa N+150).
Le modifiche che ho fatto sono giuste?
P.S.: N è la cardinalità del vettore