Программа для поиска пары точек с минимальным расстоянием из заданных пяти - C (СИ)
Формулировка задачи:
Здравствуйте, пытаюсь написать программу с данным условием. Все важные ошибки которые были исправил, но программа после задания координат всех точек, в конце пишет: "Расст. между точками -858993460 и -858993460 минимально"! Не понимаю, как переменные imin и jmin могли принять такие огромные значения...
#include "stdafx.h"
#include "Conio.h"
#include "stdio.h"
#include <iostream>
#include "math.h"
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "Russian");
int x[5], y[5], imin, jmin;
float min, dx, dy;
for (int n = 0; n <= 4; n++)
{
printf("Введите координаты точки %d:\n", n + 1);
scanf_s("%f%f", &x[n], &y[n]);
}
min = sqrt((x[0] - x[1])*(x[0] - x[1]) + (y[0] - y[1])*(y[0] - y[1]));
for (int i = 0; i < 4; i++)
{
for (int j = i + 1; j < 5; j++)
{
dx = x[i] - x[j];
dy = y[i] - y[j];
if (min>sqrt(dx*dx + dy*dy))
{
min=sqrt(dx*dx + dy*dy);
imin = i;
jmin = j;
}
}
}
printf("Расстояние между точками %d и %d минимально", imin, jmin);
_getch();
return 0;
}Решение задачи: «Программа для поиска пары точек с минимальным расстоянием из заданных пяти»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
int main()
{
// setlocale(LC_ALL, "Russian");
int x[5], y[5], imin, jmin, i,j,n;
float min, dx, dy;
for (n = 0; n <= 4; n++)
{
printf("Введите координаты точки %d:\n", n + 1);
scanf("%d %d", &x[n], &y[n]);
}
min = sqrt((x[0] - x[1])*(x[0] - x[1]) + (y[0] - y[1])*(y[0] - y[1]));
for ( i = 0; i < 4; i++)
{
for ( j = i + 1; j < 5; j++)
{
dx = x[i] - x[j];
dy = y[i] - y[j];
if (min>sqrt(dx*dx + dy*dy))
{
min=sqrt(dx*dx + dy*dy);
imin = i;
jmin = j;
}
}
}
printf("Расстояние между точками %d и %d минимально", imin, jmin);
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявлены массивы x и y для хранения координат пяти точек, а также переменные imin, jmin, i, j, n для поиска минимального расстояния между точками.
- Цикл for позволяет ввести координаты пяти точек с помощью функции scanf.
- Вычисляется минимальное расстояние между первой и второй точками и сохраняется в переменной min.
- Два вложенных цикла for ищут пару точек с минимальным расстоянием, вычисляя расстояние между каждой парой точек и обновляя значение переменной min, если новое расстояние меньше текущего минимального.
- Значения переменных imin и jmin устанавливаются равными индексам найденной пары точек с минимальным расстоянием.
- Выводится сообщение с индексами найденной пары точек.
- Программа возвращает 0, заканчивая свою работу.