Advertisement
Guest User

Untitled

a guest
Oct 21st, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.39 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. struct Point{
  6.     double x, y;
  7. };
  8.  
  9. double getDistance (struct Point a, struct Point b) {
  10.     double distance;
  11.     distance = sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y)) ;
  12.     return distance;
  13. }
  14.  
  15. int main () {
  16.     struct Point list_p [5] = {
  17.                                 {2.0, 3.5},
  18.                                 {1.2, 4.5},
  19.                                 {1.5, 6.1},
  20.                                 {6.9, 7.4},
  21.                                 {3.7, 8.2}
  22.                             };  
  23.     int  n = sizeof(list_p)/sizeof(list_p[0]);
  24.     double dist_p [n][n];
  25.     int points [n][n];
  26.    
  27.     for(int i=0;i<n;i++){
  28.         for(int j=0;j<n;j++){
  29.             points[i][j] = -1;
  30.         }
  31.     }
  32.    
  33.     for(int i=0;i<n;i++){
  34.         for(int j=0;j<n;j++){
  35.             if (i == j){
  36.                 dist_p[i][j] = 0;
  37.             }else{
  38.                 dist_p[i][j] = getDistance(list_p[i], list_p[j]);
  39.             }
  40.         }
  41.     }
  42.    
  43.     for(int i=0;i<n;i++){
  44.         for(int j=0;j<n;j++){
  45.             printf("%lf\t", dist_p[i][j]);
  46.         }
  47.         printf("\n");
  48.     }
  49.    
  50.     int k, aux, pivot;
  51.    
  52.     for(int i=0;i<n;i++){
  53.         for(int j=0;j<n;j++){
  54.             k = 0;
  55.             if (i == j){
  56.                 points[i][j] = j;
  57.                 aux = j;
  58.             }else{
  59.                 if(points[i][k] != -1){
  60.                     pivot = j;
  61.                     while (k < n){
  62.                         if (points[i][k] != -1){
  63.                             if (dist_p[i][pivot] > dist_p[i][points[i][k]]){
  64.                                 aux = pivot;
  65.                                 pivot = points[i][k];
  66.                                 points[i][k] = aux;
  67.                                 k++;
  68.                             }
  69.                             else{
  70.                                 k++;
  71.                             }
  72.                         }else{
  73.                             points[i][k] = pivot;
  74.                             break;
  75.                         }
  76.                     }
  77.                        
  78.                 } else{
  79.                     points[i][k] = j;
  80.                 }
  81.             }
  82.         }
  83.     }
  84.     for(int i=0;i<n;i++){
  85.         for(int j=0;j<n;j++){
  86.             printf("%d\t", points[i][j]);
  87.         }
  88.         printf("\n");
  89.     }
  90.  
  91.   return 0;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement