Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2011, 06:17   #1
savra
search money
Пользователь
 
Регистрация: 12.10.2009
Сообщений: 46
По умолчанию СИ Найти наименьшее расстояние между точками

Даны координаты пяти точек x1, y1, x2, y2, x3, y3, x4, y4, x5, y5. Найти наименьшее расстояние между ними (сделать функцию нахождения расстояния, минимум из двух).

Смысл такой что сначала при помощи функции rasst находим расстояние между двумя точками, а потом с помощью minim находим меньшее из двух расстояний

Подскажите какой цикл надо сделать чтобы не запоминать кучу переменных.

Код:
#include <conio.h>
#include <stdio.h>
#include <math.h>

double rasst (double x1, double y1, double x2, double y2)
{
   double rast;
   rast = sqrt(pow((x1 - x2), 2.0) + pow((y1 - y2), 2.0));

   return rast;
}

double minim (double a, double b)
{
   double mini;
   if (a < b)  mini = a;
   else  if (a > b) mini = b;

   return mini;
}
void main()
{
   int i;
   double x1, x1,
             x2, x2,
             x3, y3,
             x4, y4,
              x5, y5, min_rast;

}
   printf("vvedite koopguHatbI to4ki: ");
   scanf("%lf %lf", &x1, &y1);
   printf("vvedite koopguHatbI to4ki: ");
   scanf("%lf %lf", &x2, &y2);
   printf("vvedite koopguHatbI to4ki: ");
   scanf("%lf %lf", &x3, &y3);
   printf("vvedite koopguHatbI to4ki: ");
   scanf("%lf %lf", &x4, &y4);
   printf("vvedite koopguHatbI to4ki: ");
   scanf("%lf %lf", &x5, &y5);


 
   getch();
}
savra вне форума Ответить с цитированием
Старый 19.04.2011, 09:29   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

разумеется использовать массив с координатами!
( не знаю C, но что-то вроде double[][] )
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.04.2011, 10:16   #3
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

Да, надо массив использовать.
Вот код на C# перепеши на С и добавь свою функцию для нахождения мин раст
Код:
            double Tmp;
            double[,] Koordinat = new double[5, 2];//Создаем массив точек первый индекс номер точки второй координаты 0-для Х, 1-для У
            //сдесь надо будет заполнить массив реальными координатами.
            int index1=0, index2=1;//переменные для хранения индексов точек с мин расстоянием, по умолчанию считаем что минимумальное расстояние между первой и второй точками
            double minimum = Rasst(Koordinat[0,0],Koordinat[0,1],Koordinat[1,0],Koordinat[1,1]);//переменная для хранения минимального расстояния
            for (int i=0;i<Koordinat.GetLength(0)-1;i++)//перебераем точки с первой(нулевой) до предпоследней
                for (int j=i+1;j<Koordinat.GetLength(0);j++)// перебираем точки с i-той до последний
                {
                    Tmp=Rasst(Koordinat[i, 0], Koordinat[i, 1], Koordinat[j, 0], Koordinat[j, 1]);//Считаем расстояние между текущими точками
                    if (minimum > Tmp)//если меньше то текущего минимального то перезаписываем индексы и мин раст.
                    {
                        minimum = Tmp;
                        index1=i;
                        index2=j;
                    }
                }
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расстояние между точками (Delphi) КатюФа Помощь студентам 3 04.05.2010 14:52
расстояние между точками в евклидовой плоскости CrystaLize Помощь студентам 0 30.11.2009 23:47
Найти номера пары точек, расстояние между которыми наибольшее Nevis Помощь студентам 5 21.06.2009 23:37
Найти кратчайший путь между точками lucky Общие вопросы Delphi 0 27.05.2009 07:26