Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
tatiana2472
0 / 0 / 0
Регистрация: 28.05.2013
Сообщений: 6
#1

Расстояние между точками - C++

28.05.2013, 19:25. Просмотров 688. Ответов 7
Метки нет (Все метки)

задание: дано n точек определить номера точек которые имеют максимальное и минимальное расстояние между точками.
Когда вводил n=3 и координаты точке, программа работала неправильно, посмотрите ,пожалуйста, где может быть ошибка.
мой код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <math.h.>
#include <stdlib.h>
void main()
{fload a[999],b[999];
int i,j,k1,k2,k3,k4;
fload max,l,min;
printf("Vvedi n");
scanf("%d",&n);
printf("vvedi x u y");
for (i=0;i<=n-1;i++)
scanf("%f %f", &a[i],&b[i]);
l=sqrt(pow(a[1]-a[0],2)+pow(b[1]-b[0],2));
max=l;min=l;
 
for(i=0;i<=n-2;i++)
for (j=0;j<=n-1;j++)
{ l=sqrt(pow(a[i]-a[j],2)+pow(b[i]-b[j],2));
if (l<=min) {k1=i;k2=j;};
if (l>=max) {k3=i;k4=j;}}
 
printf ("%d %d %d %d",k1,k2,k3,k4);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2013, 19:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Расстояние между точками (C++):

Расстояние между двумя множествами точек - это расстояние между наиболее близко расположенными точками этих - C++
1. Расстояние между двумя множествами точек - это расстояние между наиболее близко расположенными точками этих множеств. Найти расстояние...

Расстояние между точками x0 y0 x1 y1 - C++
Всем привет, не могу понять в чем проблема программы: Найти расстояние между двумя точками заданными координатами(x1,y1) &amp;&amp; (x2,y2) ...

Расстояние между 2-мя точками. - C++
Попробовал сам, но она не выполняется, пишет ошибки при вычислении корня. Задача в следующем: Вычислить расстояние между двумя точками...

Расстояние между двумя точками - C++
1. Напишите функцию distance, которая вычисляет расстояние между двумя точками (x1, y1) и (x2, y2). Все числа и возвращаемые значения...

Расстояние между двумя точками - C++
Найти расстояние между двумя точками (x1, y1) и (x2, y2) Формат входных данных Одна строка входных данных содержит четыре...

Найти наибольшее расстояние между точками - C++
Здравствуйте. Пользователь задает координаты нескольких точек, программа должна определить, между какими точками наибольшее расстояние....

7
Гром
210 / 129 / 11
Регистрация: 20.03.2009
Сообщений: 1,103
Записей в блоге: 16
Завершенные тесты: 1
28.05.2013, 19:52 #2
j надо начинать считать не с нуля, а с i+1, чтобы не было случая, когда вы смотрите расстояние между двумя одинаковыми точками. И тип должен быть не fload, а float, если это не опечатка.
1
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
28.05.2013, 19:53 #3
C++
1
int i,j,k1=0,k2=1,k3=0,k4=1;
C++
1
2
3
4
for (j=i+1;j<=n-1;j++)
{ l=sqrt(pow(a[i]-a[j],2)+pow(b[i]-b[j],2));
if (l<=min) {min=l;k1=i;k2=j;};
if (l>=max) {max=l;k3=i;k4=j;}}
1
tatiana2472
0 / 0 / 0
Регистрация: 28.05.2013
Сообщений: 6
28.05.2013, 20:09  [ТС] #4
Исправила.Вроде все хорошо
вот код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
 #include <math.h>
 #include <stdlib.h>
 void main()
 {float a[999],b[999];
 int n,i,j,k1,k2,k3,k4;
 float max,l,min;
 printf("Vvedi n");
 scanf("%d",&n);
 printf("vvedi x u y");
 for (i=0;i<=n-1;i++)
 scanf("%f %f", &a[i],&b[i]);
 l=sqrt(pow(a[1]-a[0],2)+pow(b[1]-b[0],2));
 max=l;min=l;
 
 for(i=0;i<=n-2;i++)
 for (j=i+1;j<=n-1;j++)
 { l=sqrt(pow(a[i]-a[j],2)+pow(b[i]-b[j],2));
 if (l<=min) {min=l;k1=i;k2=j;};
 if (l>=max) {max=l;k3=i;k4=j;}}
 
 printf ("%d %d %d %d",k1,k2,k3,k4);
 }
0
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 832
28.05.2013, 20:14 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <vector>
#include <limits>
#include <cmath>
 
using namespace std;
 
typedef pair<double, double> point;
 
double distance(const point &a, const point &b)
{ return sqrt( pow(a.first - b.first, 2.0) + pow(a.second - b.second, 2.0) ); }
 
ostream& operator << (ostream &os, const point &p)
{ return os << '(' << p.first << ", " << p.second << ')'; }
 
int main()
{
    vector<point> points { {0, 0}, {5, 5}, {7, 7} };
    double min_distance = numeric_limits<double>::max(),
           max_distance = numeric_limits<double>::min();
 
    pair<int, int> min {-1, -1}, max {-1, -1};
 
    for (auto i = 0; i != points.size(); i++)
        for (auto j = i + 1; j != points.size(); j++) {
            double distance_at = distance( points[i], points[j] );
            if ( distance_at > max_distance ) {
                max_distance = distance_at;
                max = {i, j};
            }
            if ( distance_at < min_distance ) {
                min_distance = distance_at;
                min = {i, j};
            }
        }
    if ( min.first != -1 && max.first != -1 )
        cout << "min distance is " << min_distance << ", between " << points[min.first] << " and " << points[min.second]
             << "\nmax distance is " << max_distance << ", between " << points[max.first] << " and " << points[max.second];
    return 0;
}
0
tatiana2472
0 / 0 / 0
Регистрация: 28.05.2013
Сообщений: 6
28.05.2013, 20:19  [ТС] #6
Думаю тему можно закрыть.
0
tatiana2472
0 / 0 / 0
Регистрация: 28.05.2013
Сообщений: 6
30.05.2013, 23:45  [ТС] #7
Ребят ещё вопрос. Показала код преподу, препод сказал что программа при нектрых точках будет работать неправильно, поищите ошибку плиз , вот код :
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
 #include <math.h>
 #include <stdlib.h>
 void main()
 {float a[999],b[999];
 int n,i,j,k1,k2,k3,k4;
 float max,l,min;
 printf("Vvedi n");
 scanf("%d",&n);
 printf("vvedi x u y");
 for (i=0;i<=n-1;i++)
 scanf("%f %f", &a[i],&b[i]);
 l=sqrt(pow(a[1]-a[0],2)+pow(b[1]-b[0],2));
 max=l;min=l;
 
 for(i=0;i<=n-2;i++)
 for (j=i+1;j<=n-1;j++)
 { l=sqrt(pow(a[i]-a[j],2)+pow(b[i]-b[j],2));
 if (l>=max) {k1=i;k2=j;max=l;};
 if (l<=min) {k3=i;k4=j;min=l;};
}
 
 printf ("max =%d %d  \n min =%d %d",k1,k2,k3,k4);
 }
Добавлено через 4 минуты
Тема Up. Как сделать чтобы программа выдавала 3 точки с минимальным расстоянием?

Добавлено через 16 минут
тема Up!
0
MrGluck
Модератор
Эксперт CЭксперт С++
7490 / 4605 / 691
Регистрация: 29.11.2010
Сообщений: 12,589
31.05.2013, 02:51 #8
tatiana2472, вы б хоть потрудились отступы или пробелы расставить, код трудночитаем.
0
31.05.2013, 02:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2013, 02:51
Привет! Вот еще темы с ответами:

Посчитать расстояние между точками прямой - C++
Здравствуйте,помогите пожалуйста.даны два списка х1,х2,...-1е координаты точек Прямой и у1,у2,...- 2е координаты точек Прямой,нужно...

Найти наибольшее расстояние между точками - C++
#include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;Math.h&gt; using namespace std; double rast(double x1, double x2, double y1,...

Найти расстояние между двумя точками на плоскости - C++
Даны четыре действительных числа: x1, y1, x2, y2. Напишите функцию distance(x1, y1, x2, y2), вычисляющую расстояние между точкой (x1. y1) и...

Вычислить расстояние между двумя точками с координатами х1, у1 и х2, у2. - C++
Напишите программу пожалуйста)) Спасибо заранее


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru