Salve a tutti dovrei sviuluppare una function C che, dato come parametro di input un array di tipo struct punto { double x; double y;
} e il suo size, determina e restituisce come paramentri di output gli indici dei due punti che ahnno distnza
minima tra loro. I campi x e y contengono l' ascissa e l' ordinata, rispettivamente, di un punto.
il mio problema sta nel restituire gli indici: questo è il mio programma
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
typedef struct punto{
double x;
double y;
};
typedef struct punto Punto[4];
double dist(struct punto p1,struct punto p2);
void indici(Punto,int,int *,int *);
void main()
{
Punto m_p={{2.0,2.0},{6.0,0.0},{5.0,3.0},{5.0,4.0}};
double ab,ac,ad,bc,bd,cd;
int n=4;
int ind1,ind2;
ab=dist(m_p[0],m_p[1]);
ac=dist(m_p[0],m_p[2]);
ad=dist(m_p[0],m_p[3]);
bc=dist(m_p[1],m_p[2]);
bd=dist(m_p[1],m_p[3]);
cd=dist(m_p[2],m_p[3]);
printf("Distanza ab: %lf\n",ab);
printf("Distanza ac: %lf\n",ac);
printf("Distanza ad: %lf\n",ad);
printf("Distanza bc: %lf\n",bc);
printf("Distanza bd: %lf\n",bd);
printf("Distanza cd: %lf\n",cd);
indici(m_p,n,&ind1,&ind2);
printf("Valore indici: %d e %d",ind1,ind2);
}
void indici(Punto vettore,int n,int *ind1,int *ind2){
int i,j;
double min,diff;
min=sqrt(pow((vettore[1].x-vettore[0].x),2)+pow((vettore[1].y-vettore[0].y),2));
for(i=0;i<n-1;i++)
{
for(j=1;j<n;j++)
{
diff=sqrt(pow((vettore[j].x-vettore.x),2)+pow(vettore[j].y-vettore.y,2));
if(diff<min)
{
min=diff;
*ind1=i;
*ind2=j;
}
}
}
}
Qualcuno di buona volontà che mi puo dare qualche dritta?