Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
DaDid
0 / 0 / 0
Регистрация: 25.09.2013
Сообщений: 22
#1

Найти максимальное и минимальное значение между точками и вывести их вместе с точками

31.10.2013, 21:21. Просмотров 1372. Ответов 36
Метки нет (Все метки)

Я уже весь гугл перерыл и всю голову выпотрошил.не получается. Нужно написать функцию для двух массивов х[6] и у[6]. Эти массивы задают координаты точек.Надо найти максимальное и минимальное значение между точками и вывести их вместе с точками. Т.е. в таком примерно виде (Максимальное расстояние между точками А2 и А5 = 12).Фишка в том, что не между соседними точками, а между всеми. Вобщем не получается, помогите кто чем сможет)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2013, 21:21
Ответы с готовыми решениями:

Найти минимальное расстояние между двумя точками
Даны два массива вещественных чисел, x и y. Их длина одинакова и равна n....

Найти максимальное расстояние между точками на плоскости
Даны координаты n точек на плоскости: (X1, Y1), ..., (Xn, Yn) (n ≤ 30). Найти...

Найти минимальное расстояние между точками множеств и сами точки, расположенные на этом расстоянии
Даны множества A и B, состоящие соответственно из N1 и N2 точек (точки заданы...

Вывести подстроку между двумя точками
ЗАДАЧА: На вход дана строка (заканчивается символом 13), содержащая РОВНО 2...

Найти расстояния между точками
Пожалуйста помогите с задачей.На плоскости есть три точки с координатами...

36
Folko
265 / 253 / 27
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
31.10.2013, 21:30 #2
DaDid, проходите по всем элементам...
C++
1
2
3
for (int i = 0; i < 6; i++)
    for(int j = 0; j < 6; j++)
    { тут вычисляем расстояние между точками A[i] и A[j] }
Добавлено через 7 минут
DaDid, ну и там еще добавите условие, что i != j, что бы он не считал расстояние между одной и той же точкой
1
DaDid
0 / 0 / 0
Регистрация: 25.09.2013
Сообщений: 22
31.10.2013, 21:31  [ТС] #3
C++
1
2
3
for (int i = 0; i < 6; i++)
    for(int j = 0; j < 6; j++)
s=sqrt(pow((x[i]-x[i+j]),2) +pow((y[i]-y[i+j]),2));
то есть так? а разве при i=6 и j=6 не получится что программа будет работать с несуществующей точкой?
0
Folko
265 / 253 / 27
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
31.10.2013, 21:42 #4
DaDid, как написал выше, введите if (i != j). Или тут еще подумал, вроде такой алгоритм должен сработать:
C++
1
2
for (int i = 0; i < 5; i++)
    for (int j = i+1; j <=5; j++)
по моему так не будут высчитываться лишние расстояния. Но я не уверен) протестите

Добавлено через 6 минут
DaDid, Cобсно написал программу, даже на листочке для наглядности расчертил. Получается что вот в таком виде циклы производят ровно столько расчетов, сколько нужно. В прошлом цикле некоторые линии по 2 раза вычислялись
1
DaDid
0 / 0 / 0
Регистрация: 25.09.2013
Сообщений: 22
31.10.2013, 21:55  [ТС] #5
Больше спасибо)попробую-отпишусь

Добавлено через 10 минут
Все таки не правильно считает..
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
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
float maxrasst(float x[],float y[],int n);
int main()
{
 float x[6],y[6];
for(int i=0; i<6; i++)
        {
            printf("A%d ",i+1);
    printf("vvedite koordinatu x");
    scanf_s("%d", &x[i]);
    printf("vvedite koordinatu y");
    scanf_s("%d", &y[i]);
}
    float s=maxrasst(x,y,6);
    printf("Max rasstoyanie mezdu tochkami A i A=%d\n",s);
   getch();
    return 1;
    ;}
    float maxrasst(float x[],float y[],int n)
    {
        float s=0;
        float smax=-100000;
        
        for (int i = 0; i < n; i++)
    for (int j = i+1; j <=n; j++)
            smax=sqrt(pow((x[i]-x[j]),2) +pow((y[i]-y[j]),2));
        if (s>smax) smax=s;
        return smax;
                
        }
0
Folko
265 / 253 / 27
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
31.10.2013, 21:57 #6
DaDid, что именно неправильно?
1
DaDid
0 / 0 / 0
Регистрация: 25.09.2013
Сообщений: 22
31.10.2013, 21:59  [ТС] #7
неправильно ищет расстояние. Я ввожу координаты точек нулевые для всех, кроме двух. В двух точках ставлю х=0,у=5 и х=0,у=1, максимальное расстояние при таких данных должно быть равным 4, но программа этого не определяет
0
Folko
265 / 253 / 27
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
31.10.2013, 22:03 #8
DaDid, сейчас сам попробую сделать
1
Folko
265 / 253 / 27
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
31.10.2013, 22:13 #9
DaDid, вот, сделал как у вас. Неправильно считает?
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <QTextStream>
#include <math.h>
 
int main(int argc, char *argv[])
{
    QTextStream cout(stdout);
    int x[6] = {0,0,0,0,0,0};
    int y[6] = {0,0,0,0,1,5};
    for (int i = 0; i < 6; i++)
        cout << x[i] << ";";
    cout << endl;
    for (int i = 0; i < 6; i++)
        cout << y[i] << ";";
    cout << endl << "Points" << endl;
    for (int i = 0; i < 5; i++)
        for (int j = i+1; j <=5; j++)
        {
            double temp = sqrt(pow(x[j]-x[i],2)+pow(y[j]-y[i],2));
            cout << "[" << i << " - " << j << "] = " << temp << endl;
        }
    return 0;
}
0
Миниатюры
Найти максимальное и минимальное значение между точками и вывести их вместе с точками  
DaDid
0 / 0 / 0
Регистрация: 25.09.2013
Сообщений: 22
31.10.2013, 22:23  [ТС] #10
Найти максимальное и минимальное значение между точками и вывести их вместе с точками
0
DaDid
0 / 0 / 0
Регистрация: 25.09.2013
Сообщений: 22
31.10.2013, 22:25  [ТС] #11
Вы изначально задали все элементы, задачей является написать функцию для этих двух массивов.Да и считает, как видите неправильно..
0
Folko
265 / 253 / 27
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
31.10.2013, 22:26 #12
DaDid, если вы это на своем коде сделали, то предлагаю вывести результаты вычислений каждого узла. Посмотрим, какое значение неправильное.
Вот переделал под ввод значений. Результаты, если не ошибаюсь, такие же...
1
Миниатюры
Найти максимальное и минимальное значение между точками и вывести их вместе с точками  
DaDid
0 / 0 / 0
Регистрация: 25.09.2013
Сообщений: 22
31.10.2013, 22:47  [ТС] #13
Вобщем странно что то у меня..и значения непонятно откуда берутся тоже
Найти максимальное и минимальное значение между точками и вывести их вместе с точками

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
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
float maxrasst(float x[],float y[],int n);
int main()
{
 float x[6],y[6];
for(int i=0; i<6; i++)
        {
            printf("A%d ",i+1);
    printf("vvedite koordinatu x");
    scanf_s("%d", &x[i]);
    printf("vvedite koordinatu y");
    scanf_s("%d", &y[i]);
}
float smax=0;
    smax=maxrasst(x,y,6);
    printf("Max rasstoyanie mezdu tochkami =%d\n",smax);
   getch();
    return 1;
    ;}
    float maxrasst(float x[],float y[],int n)
    {
        for (int i = 0; i < n; i++)
            printf("x%d = %d   ,   y%d = %d\n",i,x,i,y);
        float s=0;
        float smax=-100000;
        for (int i = 0; i < n; i++)
        for (int j = i+1; j <=n; j++)
    {float s=sqrt(pow(x[j]-x[i],2)+pow(y[j]-y[i],2));
         printf("%d-%d=%d\n",j,i,s);
         if (s>smax) smax=s;}
         return smax;
                
        }
0
Folko
265 / 253 / 27
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
31.10.2013, 22:49 #14
DaDid, эммм... попробуйте не 1, 2, 3 вводить а 1.0, 2.0, 3.0... у меня х и у целочисленные
1
DaDid
0 / 0 / 0
Регистрация: 25.09.2013
Сообщений: 22
31.10.2013, 22:52  [ТС] #15
вводить в значениях х,у?
0
Folko
265 / 253 / 27
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
31.10.2013, 22:55 #16
DaDid, да. Они же вещественного типа (или как там называются числа с плавающей точкой)
0
DaDid
0 / 0 / 0
Регистрация: 25.09.2013
Сообщений: 22
31.10.2013, 22:58  [ТС] #17
В таком случае при вводе первой координаты сразу пролетает вся программа и выдается невесть что
0
Folko
265 / 253 / 27
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
31.10.2013, 23:03 #18
DaDid, попробуйте мой выложенный код у себя запустить
1
DaDid
0 / 0 / 0
Регистрация: 25.09.2013
Сообщений: 22
31.10.2013, 23:07  [ТС] #19
Не запускается, ошибки
0
Folko
265 / 253 / 27
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
31.10.2013, 23:10 #20
DaDid, QTextStream замените на iostream, добавьте using namespace std;, уберите QTextStream cout(stdout); и подобную строку
1
31.10.2013, 23:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2013, 23:10

Вывести на экран точки находящиеся между двумя определенными точками
Здравствуйте , хотел бы уточнить , так как не строится логика в программе или я...

Найти наибольшее расстояние между точками
#include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;Math.h&gt; using namespace...

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


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

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

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