Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
alex-net
3 / 3 / 1
Регистрация: 27.11.2012
Сообщений: 173
1

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

26.02.2013, 22:08. Просмотров 1088. Ответов 6
Метки нет (Все метки)

Добрый вечер. Написал программу. Только не совсем уверен, что она правильная, помогите исправить.

Условие:
На плоскости заданы своими координатами 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2013, 22:08
Ответы с готовыми решениями:

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

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

составить программу определяющую пару точек расстояние между которыми максимально
в трехмерном пространстве заданы координаты n точек составить программу...

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

Составить программу, определяющую, которая из точек находится ближе к началу координат
Помогите пожалуйста с задачами!! Очень нужно..раньше не могла написать-не было...

6
NinGAZ
14 / 14 / 4
Регистрация: 27.07.2011
Сообщений: 162
26.02.2013, 22:33 2
счет в Си начинается с нуля,цикл построен неправильно. не хватает скобок.
0
alex-net
3 / 3 / 1
Регистрация: 27.11.2012
Сообщений: 173
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;
}
0
Nixy
ComfyMobile
400 / 281 / 34
Регистрация: 24.07.2012
Сообщений: 916
27.02.2013, 08:35 4
исправили да не все, цикл i до n-1, а цикл j ? выход за пределы массива, и куда проше былоб описать функцию длины и туда передавать точки ввиде структур с координатами
0
alex-net
3 / 3 / 1
Регистрация: 27.11.2012
Сообщений: 173
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;
    }
Функцию длины вы имеете ввиду линейный массив с координатами?
0
Nixy
ComfyMobile
400 / 281 / 34
Регистрация: 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, код станет более читабельным
0
alex-net
3 / 3 / 1
Регистрация: 27.11.2012
Сообщений: 173
04.03.2013, 17:58  [ТС] 7
Ребят, помогите переписать программу правильно, вообще никак не разберусь.
0
04.03.2013, 17:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2013, 17:58

Составить программу, определяющую, которая из точек находится ближе к началу координат
Даны две точки А(х1,у1) и В(х2,у2). Составить программу, определяющую, которая...

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

Структура, координаты точек, расстояние между ними.
Доброе время суток. Если можете, помогите найти ошибку. Заранее благодарю. ...


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

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

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