Программа для поиска пары точек с минимальным расстоянием из заданных пяти - 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;
}

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

В этом коде:

  1. Объявлены массивы x и y для хранения координат пяти точек, а также переменные imin, jmin, i, j, n для поиска минимального расстояния между точками.
  2. Цикл for позволяет ввести координаты пяти точек с помощью функции scanf.
  3. Вычисляется минимальное расстояние между первой и второй точками и сохраняется в переменной min.
  4. Два вложенных цикла for ищут пару точек с минимальным расстоянием, вычисляя расстояние между каждой парой точек и обновляя значение переменной min, если новое расстояние меньше текущего минимального.
  5. Значения переменных imin и jmin устанавливаются равными индексам найденной пары точек с минимальным расстоянием.
  6. Выводится сообщение с индексами найденной пары точек.
  7. Программа возвращает 0, заканчивая свою работу.

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

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

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