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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
DaDid
0 / 0 / 0
Регистрация: 25.09.2013
Сообщений: 22
#1

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

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

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

Найти минимальное расстояние между двумя точками - C++
Даны два массива вещественных чисел, x и y. Их длина одинакова и равна n. Каждый (i-й) элемент массива x содержит абсциссу некоторой точки...

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

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

Найти расстояния между точками - C++
Пожалуйста помогите с задачей.На плоскости есть три точки с координатами A(2;3)B(-1;4)C(0;0).Найти расстояния между точками AB BC CA и...

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

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

36
Folko
265 / 253 / 7
Регистрация: 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 / 7
Регистрация: 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 / 7
Регистрация: 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 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
31.10.2013, 22:03 #8
DaDid, сейчас сам попробую сделать
1
Folko
265 / 253 / 7
Регистрация: 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 / 7
Регистрация: 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 / 7
Регистрация: 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
31.10.2013, 22:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2013, 22:52
Привет! Вот еще темы с ответами:

Найти наибольшее расстояние между точками - 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) и...

Файл: найти наибольшее и наименьшее расстояния между точками. - C++
Помогите разобраться Пытаюсь сделать задание: В текстовый файл занесены пары чисел, разделенных пробелом (каждая пара чисел – в новой...

Найти дистанцию между точками на плоскости (использовать перегруженный оператор) - C++
Необходимо найти дистанцию между точками на площади, используя перегруженный оператор. #include &lt;iostream&gt; using namespace std; ...


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

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

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