#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#define square(x) ((x) * (x))
typedef struct{
double x, y, z;
}Coordinate;
double CalcDistance(Coordinate *A, Coordinate *B){
return square(A->x - B->x) + square(A->y - B->y) + square(A->z - B->z);
}
int main(void){
int n = 5;
int i, j;
Coordinate *Position;
Position = (Coordinate *)malloc(sizeof(Coordinate) * n);
if(Position == NULL){
printf("メモリが確保できません\n");
return 1;
}
srand((unsigned int)(time(NULL)));
printf("[Coordinate]\n");
for(i = 0; i < n; ++i){
Position[i].x = (double)(rand()) / RAND_MAX;
Position[i].y = (double)(rand()) / RAND_MAX;
Position[i].z = (double)(rand()) / RAND_MAX;
printf("%d (%f %f %f)\n", i + 1, Position[i].x, Position[i].y, Position[i].z);
}
printf("\n[Distance]\n");
for(i = 0; i < n - 1; ++i){
for(j = i + 1; j < n; ++j){
printf("%d<->%d %f\n", i + 1, j + 1, CalcDistance(&Position[i], &Position[j]));
}
}
return 0;
}