У меня есть 2 указателя на некоторые структуры Point.Я хотел вычислить расстояние между двумя точками (мне не нужно вычислять его корень), поэтому у меня есть это:
w[0]=X[l];
w[1]=X[l+1];
d=m(w[0]->x-w[1]->x)+m(w[0]->y-w[1]->y);
printf("--TEST %d %d %d\n",w[0]->x,w[1]->x,w[0]->x-w[1]->x);
Ввод: X [l] = (0,1), X [l + 1] = (2,0) Вывод: --TEST 0 2 -1
Почему это так?Редактировать:
Это было частью функции find, которая находит 2 точки с наименьшим расстоянием между ними.В основном у меня есть это:
X=(Punkt**)malloc(sizeof(Punkt*)*n);
Y=(Punkt*)malloc(sizeof(Punkt)*n);
int x,y;
for(int i=0;i<n;++i) {
scanf("%d %d",&x,&y);
Y[i].x=x;
Y[i].y=y;
X[i]=(Punkt*)malloc(sizeof(Punkt*));
X[i]=&Y[i];
}
Quicksort(X,0,n-1);
Punkt **wynik=find(0,n-1);
printf("%d %d\n%d %d",wynik[0]->x,wynik[0]->y,wynik[1]->x,wynik[1]->y);
Я проверил Quicksort, он работает как надо.Функция m: #define m (a) ((a) * (a)) Ошибка только в функции find в этой части.Это работает, но я не хочу создавать переменные для каждой координаты.
int trash1=w[0]->x;
int trash2=w[1]->x;
printf("--TEST %d %d %d\n",w[0]->x,w[1]->x,w[0]->x-w[1]->x,trash1-trash2);
Вход: 2 балла (0,1) (2,0) Выход: --TEST 0 2 -1 -2