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

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

Войти
Регистрация
Восстановить пароль
 
alex-net
3 / 3 / 1
Регистрация: 27.11.2012
Сообщений: 173
#1

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

26.02.2013, 22:08. Просмотров 828. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Составить программу определяющую между какими из пар точек самое большое расстояние (C++):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
NinGAZ
14 / 14 / 1
Регистрация: 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 / 8
Регистрация: 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 / 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, код станет более читабельным
0
alex-net
3 / 3 / 1
Регистрация: 27.11.2012
Сообщений: 173
04.03.2013, 17:58  [ТС] #7
Ребят, помогите переписать программу правильно, вообще никак не разберусь.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2013, 17:58
Привет! Вот еще темы с ответами:

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

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

Найти самое большое и самое маленькое число в матрице - C++
нужно найти из этой матрицы само большое и самое маленькое число пожалуйста с коментариями

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.03.2013, 17:58
Ответ Создать тему
Опции темы

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