Нахождение минимального расстояния между двумя точками - C (СИ)

Узнай цену своей работы

Формулировка задачи:

ЗАДАЧА: Даны два множества A и B, состоящие из N1 и N2 (вводятся с клавиатуры) точек соответственно (точки заданы своими координатами на плоскости). Написать функцию для нахождения минимального расстояния между двумя точками этих множеств и сами точки, расположенные на этом расстоянии. вот, что у меня получилось, при запуске ввожу точки первого массива и затем второго, но после этого программа перестает работать..
#include <iostream>
#include <Math.h>
using namespace std;
 
double d(double x,double y){
    double t;
    double kx=pow(x,2);
    double ky=pow(y,2);
    t=pow(kx+ky,0.5);
    return t;
}
 
double rasst(double **mass1, double **mass2, int razmer1, int razmer2){
    double kx=mass1[0][0]-mass2[0][0];
    double ky=mass2[0][1]-mass2[0][1];
    double distance=d(kx,ky);
    double s;
    for(int i=0; i<razmer1; i++){
        for(int j=0; j<razmer2; j++){
               double kx=mass1[i][0]-mass2[j][0];
               double ky=mass2[i][1]-mass2[j][1];
               s=d(kx,ky);
               if(s<distance){
                   distance=s;
               }
        }
    }
    return distance;
}
 
int main(){
    setlocale(LC_ALL,"");
    int razmer1; 
    cout << "Введите размер первого массива " ;
    cin>>razmer1;
    double **mass1= new double*[razmer1];
    for (int i = 0; i < razmer1; i++) {
        mass1[i] = new double[2];
    }
    for (int i = 0; i < razmer1; i++) {
        cout<<"введите координаты "<<i+1<<" точки:\n";
        cout << " x = ";
        cin>>mass1[i][0];
        cout << " y = ";
        cin>>mass1[i][1];
    }
 
    int razmer2; 
    cout << "Введите размер второго массива " ;
    cin>>razmer2;
    double **mass2= new double*[razmer2];
    for (int i = 0; i < razmer2; i++) {
        mass2[i] = new double[2];
    }
    for (int i = 0; i < razmer2; i++) {
        cout<<"введите координаты "<<i+1<<" точки:\n";
        cout << " x = ";
        cin>>mass2[i][0];
        cout << " y = ";
        cin>>mass2[i][1];
    }
    double r=rasst(mass1, mass2, razmer1, razmer2);
    cout<<"наименьшее расстояние между точками равно:"<<r<<endl;
    //cout<<"это точки:"<<"("<<..<<","<<..<<") и ("<<..<<","<<..<<");"<<endl;

for (int i = 0; i<razmer1; i++){
     delete[]mass1[i];
}
for (int i = 0; i<razmer2; i++){
     delete[]mass2[i];
}
delete [] mass1;
delete [] mass2;
return 0;
}
Подскажите, пожалуйста. Уже не соображаю, что тут менять.
ошибка, как я понимаю, в функции rasst, только что там не так?

Решение задачи: «Нахождение минимального расстояния между двумя точками»

textual
Листинг программы
point_t * arr = new point_t[num_points];
//...
delete [] arr;

Объяснение кода листинга программы

  1. Создается массив типа point_t с размером num_points (arr).
  2. В цикле строятся точки x и y (возможно, это координаты точек на графике).
  3. Вычисляется расстояние между двумя точками (например, по формуле Евклида) и сохраняется в переменной min_distance.
  4. После использования, массив arr освобождается с помощью оператора delete [].

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5
Похожие ответы