PDA

Visualizza la versione completa : [C]funzione di riempimento array e funzione di ricerca usando i puntatori


rossonero922
19-01-2014, 12:01
l esercizio l ho risolto...voglio solo sapere se i puntatori sono stati usati in modo corretto....
il ad ogni posizione dell array deve corrisponder il risultato di (i*2)+3 con i iesima posizione...posto il codice e mi dite se va bene..


//RIEMPIMENTO

int *riempiArray(int array[100])
{
int *v;
v=&array;
int i=0;
for(v=array;v<array+100;v++)
{
*v=((i*2)+3);
i++;
}
return &v;
}




//RICERCA, HO USATO UN PUNTATORE PER IL RISULTATO ANCHE QUI ANCHE SE NON ERA //NECESSARIO...
int *cerca(int pos,int *v)
{
int i,*num,array[100];

*v=riempiArray(array);
i=0;
for(v=array;v!=pos && v<array+100;v++){
if(pos==i)
{
*num=*v;
return *num;
}
i++;
}
return 0;
}

vbextreme
19-01-2014, 13:21
Presumo che tu non abbia abilitato i warning del tuo compilatore.
Altrimenti avresti visto da solo gli errori del codice:

v=&array;
un vettore dichiarato "arra[50]" gia di per se un puntatore e quindi nella tua versione assegni a v un puntatore a puntatore.
La versione corretta

v=array;
proprio come risulta scritto bene all'interno del ciclo for.

*v=riempiArray(array);
questo invece assegna a v l'indirizzo ritornato dalla funzione. avresti dovuto srivere:

v=riempiArray(array);
Ci sono anche un p di ridondanze che sarebbero da eliminare.
Ridacci uno sguardo e riproponi.

rossonero922
19-01-2014, 13:35
l esercizio l ho risolto...voglio solo sapere se i puntatori sono stati usati in modo corretto....
il ad ogni posizione dell array deve corrisponder il risultato di (i*2)+3 con i iesima posizione...posto il codice e mi dite se va bene..


//RIEMPIMENTO

int *riempiArray(int array[100])
{
int *v;
v=&array;
int i=0;
for(v=array;v<array+100;v++)
{
*v=((i*2)+3);
i++;
}
return &v;
}




//RICERCA, HO USATO UN PUNTATORE PER IL RISULTATO ANCHE QUI ANCHE SE NON ERA //NECESSARIO...
int *cerca(int pos,int *v)
{
int i,*num,array[100];

*v=riempiArray(array);
i=0;
for(v=array;v!=pos && v<array+100;v++){
if(pos==i)
{
*num=*v;
return *num;
}
i++;
}
return 0;
}





grazie per avermi risposto...ho aggiustato un paio di cose...ora dovrebbe andar meglio...



int *riempiArray(int array[100])
{
int *v;
v=array;
int i=0;
for(v=array;v<array+100;v++)
{
*v=((i*2)+3);
i++;
}
return v;
}


int *cerca(int pos,int *v)
{
int i,*num,array[100];

v=riempiArray(array);
i=0;
for(v=array;v<array+100;v++){
if(pos==i)
{
*num=*v;
return (int *)*num;
}
i++;
}
return 0;
}






una domanda...considera la funzione riempi array.......mi sono fatto restituire v.......questo equivale a &v???o ha un altro significato?

vbextreme
19-01-2014, 14:38
un vettore es:v[] alla stregua di un puntatore il cui suo indirizzo v e non &v.
ricontrolla il codice e togli le ridondanze.

Loading