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

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

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

ЗАДАЧА: Даны два множества A и B, состоящие из N1 и N2 (вводятся с клавиатуры) точек соответственно (точки заданы своими координатами на плоскости). Написать функцию для нахождения минимального расстояния между двумя точками этих множеств и сами точки, расположенные на этом расстоянии. вот, что у меня получилось, при запуске ввожу точки первого массива и затем второго, но после этого программа перестает работать..
Листинг программы
  1. #include <iostream>
  2. #include <Math.h>
  3. using namespace std;
  4. double d(double x,double y){
  5. double t;
  6. double kx=pow(x,2);
  7. double ky=pow(y,2);
  8. t=pow(kx+ky,0.5);
  9. return t;
  10. }
  11. double rasst(double **mass1, double **mass2, int razmer1, int razmer2){
  12. double kx=mass1[0][0]-mass2[0][0];
  13. double ky=mass2[0][1]-mass2[0][1];
  14. double distance=d(kx,ky);
  15. double s;
  16. for(int i=0; i<razmer1; i++){
  17. for(int j=0; j<razmer2; j++){
  18. double kx=mass1[i][0]-mass2[j][0];
  19. double ky=mass2[i][1]-mass2[j][1];
  20. s=d(kx,ky);
  21. if(s<distance){
  22. distance=s;
  23. }
  24. }
  25. }
  26. return distance;
  27. }
  28. int main(){
  29. setlocale(LC_ALL,"");
  30. int razmer1;
  31. cout << "Введите размер первого массива " ;
  32. cin>>razmer1;
  33. double **mass1= new double*[razmer1];
  34. for (int i = 0; i < razmer1; i++) {
  35. mass1[i] = new double[2];
  36. }
  37. for (int i = 0; i < razmer1; i++) {
  38. cout<<"введите координаты "<<i+1<<" точки:\n";
  39. cout << " x = ";
  40. cin>>mass1[i][0];
  41. cout << " y = ";
  42. cin>>mass1[i][1];
  43. }
  44. int razmer2;
  45. cout << "Введите размер второго массива " ;
  46. cin>>razmer2;
  47. double **mass2= new double*[razmer2];
  48. for (int i = 0; i < razmer2; i++) {
  49. mass2[i] = new double[2];
  50. }
  51. for (int i = 0; i < razmer2; i++) {
  52. cout<<"введите координаты "<<i+1<<" точки:\n";
  53. cout << " x = ";
  54. cin>>mass2[i][0];
  55. cout << " y = ";
  56. cin>>mass2[i][1];
  57. }
  58. double r=rasst(mass1, mass2, razmer1, razmer2);
  59. cout<<"наименьшее расстояние между точками равно:"<<r<<endl;
  60. //cout<<"это точки:"<<"("<<..<<","<<..<<") и ("<<..<<","<<..<<");"<<endl;
  61.  
  62. for (int i = 0; i<razmer1; i++){
  63. delete[]mass1[i];
  64. }
  65. for (int i = 0; i<razmer2; i++){
  66. delete[]mass2[i];
  67. }
  68. delete [] mass1;
  69. delete [] mass2;
  70. return 0;
  71. }
Подскажите, пожалуйста. Уже не соображаю, что тут менять.
ошибка, как я понимаю, в функции rasst, только что там не так?

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

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

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

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

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


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

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

11   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы