Pettinato
28-01-2002, 10:22
Ciao ragazzi
ho un problema a usare la funzione 'qsort' delle libreria stlib.h.
Allora quello che ho capito io è:
qsort('qui ci va il nome dell'array da ordinare','qui la lunghezza','qui la dimensione con size of','qui la funzione che confronta i 2 array tramite i 2 puntatori in entrata')
I puntatori gli ho dichiarati gli ho assegnato l'indirizzo iniziale degli array.
Nonostante tutto il compilatore mi dice che il puntatore è incompatibile.
Vi allego le mie procedure che è meglio :)
int CONFRONTA(int *v1,int *v2) {
if(*v1 < *v2) return -1;
else if (*v1 == *v2) return 0;
else return 1;
}
void LISTACELLE(){
int *e1,*e2;
int B[n],C[n];
CELLA *p;
int r,i,z,m;
r=0;
for(i=0;i<=n;i++)
for(p=A[i].next;p->next!=NIL;p=p->next)
{
r=r+1;
B[r]=p->x;}
e1=&B[0];
for(z=0;z<=r;z++)
{C[z]=z;}
e2=&C[0];
qsort(B,r,sizeof(int),CONFRONTA);
for(m=0,m<=r,m++)
printf('%d %d',B[m],A[i]);}
ho un problema a usare la funzione 'qsort' delle libreria stlib.h.
Allora quello che ho capito io è:
qsort('qui ci va il nome dell'array da ordinare','qui la lunghezza','qui la dimensione con size of','qui la funzione che confronta i 2 array tramite i 2 puntatori in entrata')
I puntatori gli ho dichiarati gli ho assegnato l'indirizzo iniziale degli array.
Nonostante tutto il compilatore mi dice che il puntatore è incompatibile.
Vi allego le mie procedure che è meglio :)
int CONFRONTA(int *v1,int *v2) {
if(*v1 < *v2) return -1;
else if (*v1 == *v2) return 0;
else return 1;
}
void LISTACELLE(){
int *e1,*e2;
int B[n],C[n];
CELLA *p;
int r,i,z,m;
r=0;
for(i=0;i<=n;i++)
for(p=A[i].next;p->next!=NIL;p=p->next)
{
r=r+1;
B[r]=p->x;}
e1=&B[0];
for(z=0;z<=r;z++)
{C[z]=z;}
e2=&C[0];
qsort(B,r,sizeof(int),CONFRONTA);
for(m=0,m<=r,m++)
printf('%d %d',B[m],A[i]);}