Нахождение минимального расстояния между двумя точками - 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;
Объяснение кода листинга программы
- Создается массив типа point_t с размером num_points (
arr
). - В цикле строятся точки
x
иy
(возможно, это координаты точек на графике). - Вычисляется расстояние между двумя точками (например, по формуле Евклида) и сохраняется в переменной min_distance.
- После использования, массив
arr
освобождается с помощью оператора delete [].
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д