Мне нужно найти точки, которые ближе всего друг к другу. Я написал свой код, и он должен работать (я сделал это в java, и он работал нормально, а затем я перевел его в C).
Программа C продолжает выводить неправильный ответ (0,0) (0,0).
Правильный ответ: (1.0, 1.0) (2.0, 0.5)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double nearest(double x1, double y1, double x2, double y2);
int main(){
double temp1 = 0;
double temp2 = 0;
double temp3 = 0;
double temp4 = 0;
double points[8][2] = {
{-1, 3},
{-1, -1},
{1, 1},
{2, 0.5},
{2, -1},
{3, 3},
{4, 2},
{4, -0.5}
};
double minimum = nearest(points[0][0], points[0][1], points[1][0], points[1][1]);
for(int i = 0; i < 8; i++){
for(int j = i+1; j < points[i][j]; j++){
double distance = nearest(points[i][0], points[i][1], points[j][0], points[j][1]);
if(minimum > distance){
minimum = nearest(points[i][0], points[i][1], points[j][0], points[j][1]);
temp1 = points[i][0];
temp2 = points[i][1];
temp3 = points[j][0];
temp4 = points[j][1];
}
}
}
printf("(%lf, %lf) (%lf, %lf)\n", temp1, temp2, temp3, temp4);
}
double nearest(double x1, double y1, double x2, double y2){
return sqrt((pow(x2 - x1, 2)) + (pow(y2 - y1, 2)));
}