Форум программистов, компьютерный форум CyberForum.ru

Составить программу определяющую между какими из пар точек самое большое расстояние - C++

Восстановить пароль Регистрация
 
alex-net
3 / 3 / 1
Регистрация: 27.11.2012
Сообщений: 171
26.02.2013, 22:08     Составить программу определяющую между какими из пар точек самое большое расстояние #1
Добрый вечер. Написал программу. Только не совсем уверен, что она правильная, помогите исправить.

Условие:
На плоскости заданы своими координатами n точек. Составить программу определяющую между какими из пар точек самое большое расстояние. Координаты точек занести в массив.

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
41
42
43
44
45
46
47
48
#include <iostream>
#include <math.h>
 
using namespace std;
 
int main()
{
    int nmax = 10;
    int n,i,j,imax,jmax;
    int M[n][2];
    int x,y;
    int mx;
    cout << "Vvedite kolichestvo tochek ot 2 do " << nmax <<": ";
    cin >> n;
 
    for (i = 1; i < n; i++)
    for (j = 1; j < n; j++)
    {
        cin << M[i][j];
    }
 
    cout << "Koordinaty: ";
 
    for (i = 1; i < n; i++)
    {
        cout << "Vvedite x: ";
        cin >> x;
    }
 
    for (i = 1; i < n; i++)
    {
        cout << "Vvedite y: ";
        cin >> y;
    }
 
    mx = sqrt(((M[i][j] - M[i+1][j])*(M[i][j] - M[i+1][j])) + ((M[i][j]-M[i][j+1])*(M[i][j]-M[i][j+1])));
    imax = 1;
    imax = 2;
 
    for (i =1; i < n-1; i++)
    if (sqrt(((M[i][j] - M[i+1][j])*(M[i][j] - M[i+1][j])) + ((M[i][j]-M[i][j+1])*(M[i][j]-M[i][j+1]))) > mx)
        mx = sqrt(((M[i][j] - M[i+1][j])*(M[i][j] - M[i+1][j])) + ((M[i][j]-M[i][j+1])*(M[i][j]-M[i][j+1])));
    imax = i;
    imax = j;
 
    cout << "Maksimalnoe rasstoyanie mezhdu tochkami" << imax << " - " << jmax << " = " << mx << endl;
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2013, 22:08     Составить программу определяющую между какими из пар точек самое большое расстояние
Посмотрите здесь:

C++ Структура, координаты точек, расстояние между ними.
Написать программу, которая находит самое большое число из текста программы C++
C++ Составить программу, определяющую, которая из точек находится ближе к началу координат
Найти самое большое и самое маленькое число в матрице C++
Составить программу, определяющую, которая из точек находится ближе к началу координат C++
составить программу определяющую пару точек расстояние между которыми максимально C++
Даны координаты двух точек. Вычислить расстояние между ними C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NinGAZ
13 / 13 / 1
Регистрация: 27.07.2011
Сообщений: 162
26.02.2013, 22:33     Составить программу определяющую между какими из пар точек самое большое расстояние #2
счет в Си начинается с нуля,цикл построен неправильно. не хватает скобок.
alex-net
3 / 3 / 1
Регистрация: 27.11.2012
Сообщений: 171
27.02.2013, 07:46  [ТС]     Составить программу определяющую между какими из пар точек самое большое расстояние #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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
#include <math.h>
 
using namespace std;
 
int main()
{
    int nmax = 10;
    int n,i,j,imax,jmax;
    int M[10][2];
    int x,y;
    double mx;
    cout << "Vvedite kolichestvo tochek ot 2 do " << nmax <<": ";
    cin >> n;
 
    for (i = 0; i < 2; i++)
    {
        for (j = 0; j < 2; j++)
        cin >> M[i][j];
    }
 
    cout << "Koordinaty: ";
 
    for (i = 0; i < n; i++)
    {
        cout << "Vvedite x: ";
        cin >> x;
    }
 
    for (i = 0; i < n; i++)
    {
        cout << "Vvedite y: ";
        cin >> y;
    }
 
    mx = sqrt(((M[i][j] - M[i+1][j])*(M[i][j] - M[i+1][j])) + ((M[i][j]-M[i][j+1])*(M[i][j]-M[i][j+1])));
    imax = 1;
    jmax = 2;
 
    for (i =0; i < n-1; i++)
    {
        for (j =0; j < n; j++)
        if (sqrt(((M[i][j] - M[i+1][j])*(M[i][j] - M[i+1][j])) + ((M[i][j]-M[i][j+1])*(M[i][j]-M[i][j+1]))) > mx)
        mx = sqrt(((M[i][j] - M[i+1][j])*(M[i][j] - M[i+1][j])) + ((M[i][j]-M[i][j+1])*(M[i][j]-M[i][j+1])));
        imax = i;
        jmax = j;
    }
 
    cout << "Maksimalnoe rasstoyanie mezhdu tochkami " << imax << " i " << jmax << " = " << mx << endl;
    return 0;
}
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
27.02.2013, 08:35     Составить программу определяющую между какими из пар точек самое большое расстояние #4
исправили да не все, цикл i до n-1, а цикл j ? выход за пределы массива, и куда проше былоб описать функцию длины и туда передавать точки ввиде структур с координатами
alex-net
3 / 3 / 1
Регистрация: 27.11.2012
Сообщений: 171
28.02.2013, 17:09  [ТС]     Составить программу определяющую между какими из пар точек самое большое расстояние #5
Nixy, т.е. так?

C++
1
2
3
4
5
6
7
8
    for (i =0; i < n-1; i++)
    {
        for (j =0; j < n-1; j++)
        if (sqrt(((M[i][j] - M[i+1][j])*(M[i][j] - M[i+1][j])) + ((M[i][j]-M[i][j+1])*(M[i][j]-M[i][j+1]))) > mx)
        mx = sqrt(((M[i][j] - M[i+1][j])*(M[i][j] - M[i+1][j])) + ((M[i][j]-M[i][j+1])*(M[i][j]-M[i][j+1])));
        imax = i;
        jmax = j;
    }
Функцию длины вы имеете ввиду линейный массив с координатами?
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
28.02.2013, 21:05     Составить программу определяющую между какими из пар точек самое большое расстояние #6
нет я имел ввиду что то типо
C++
1
2
3
double lenght(double x0,double y0,double x,double y){
 return sqrt(pow(x-x0,2)+pow(y-y0,2));
}
хотя в стандарте с99 , есть функция hypot, в которую просто можно передовать как параметр x-x0, y-y0, код станет более читабельным
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2013, 17:58     Составить программу определяющую между какими из пар точек самое большое расстояние
Еще ссылки по теме:

C++ Определить между какими из пар точек самое большое расстояние
C++ Найти номера пары точек, расстояние между которыми максимально (Паскаль -> С++)
Функция, которая вернет номера двух из трех заданных точек на плоскости, расстояние между которыми минимально C++
Определить, между какими из пар точек самое большое расстояние C++
Найти номера двух точек, расстояние между которыми наибольшее C++

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

Или воспользуйтесь поиском по форуму:
alex-net
3 / 3 / 1
Регистрация: 27.11.2012
Сообщений: 171
04.03.2013, 17:58  [ТС]     Составить программу определяющую между какими из пар точек самое большое расстояние #7
Ребят, помогите переписать программу правильно, вообще никак не разберусь.
Yandex
Объявления
04.03.2013, 17:58     Составить программу определяющую между какими из пар точек самое большое расстояние
Ответ Создать тему
Опции темы

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