Advertisement
BORUTO-121

EuclidDistanceNdimSpace

Sep 9th, 2021
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.58 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<math.h>
  3.  
  4. struct Tacka{
  5.   double koordinata[100];
  6. };
  7.  
  8. double udaljenost(struct Tacka tacka1, struct Tacka tacka2, int dim){
  9.   double udaljenost=0.;
  10.   int i;
  11.   for(i=0;i<dim;i++)
  12.     udaljenost+=(tacka1.koordinata[i]-tacka2.koordinata[i])*(tacka1.koordinata[i]-tacka2.koordinata[i]);
  13.   return sqrt(udaljenost);
  14. }
  15.  
  16. int izbaci(struct Tacka *niz,int vel,int out){
  17.   for(;out<vel-1;out++)
  18.     niz[out]=niz[out+1];
  19.   return (vel-1);
  20. }
  21.  
  22. int izbaci_najblize(struct Tacka *niz, int vel, int dim){
  23.   int i,prviPut=1;
  24.   int tackaMin1=-1,tackaMin2=-1;
  25.   double minUdaljenost;
  26.   for(i=0;i<vel;i++){
  27.     int j=i+1;
  28.     for(;j<vel;j++){
  29.       if(prviPut){
  30.         tackaMin1=i;tackaMin2=j;
  31.         minUdaljenost=udaljenost(niz[i],niz[j],dim);
  32.         prviPut=0;
  33.       }
  34.       else if(!prviPut && minUdaljenost>udaljenost(niz[i],niz[j],dim)){
  35.         tackaMin1=i;tackaMin2=j;
  36.         minUdaljenost=udaljenost(niz[i],niz[j],dim);
  37.       }
  38.     }
  39.   }
  40.   if(tackaMin1!=-1 && tackaMin2!=-1)
  41.         vel=izbaci(niz,izbaci(niz,vel,tackaMin2),tackaMin1);
  42.  
  43.   return vel;
  44. }
  45.  
  46. int main(){
  47.   struct Tacka niz[100] = {
  48.       {{-2, -8, -3.5, -7.11}},
  49.       {{1, -4.4, -9.01, -0.002}},
  50.       {{-2, -2, -3.5, -7}},
  51.       {{-10, -9.73, -9.01, -8.77}},
  52.       {{-1, 0, -1, -10}}
  53.   };
  54.   int dimenzija = 4;
  55.   int vel = izbaci_najblize(niz, 5, dimenzija);
  56.  
  57.   int i,j;
  58.   for (i=0; i<vel; i++) {
  59.       printf("(");
  60.       for (j=0; j<dimenzija-1; j++)
  61.           printf("%g,", niz[i].koordinata[j]);
  62.       printf("%g)\n", niz[i].koordinata[dimenzija-1]);
  63.   }
  64.   return 0;
  65. }
  66.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement