Нахождение минимального расстояния между двумя точками - 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 [].
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д