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

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

Войти
Регистрация
Восстановить пароль
 
Andrey1997
-1 / 2 / 0
Регистрация: 03.10.2015
Сообщений: 66
#1

Задача на двумерный массив - C++

18.12.2015, 22:57. Просмотров 231. Ответов 5
Метки нет (Все метки)

Дано натуральное число n. С помощью двумерного действительного числового массива [xij]i=1,2; j=1,...,n на плоскости задано n точек так, что x1j, x2j – координаты j-й точки. Какие из этих точек две точки являются наиболее близкими? Ниже есть программа, в ней проблема, надо чтобы n вводилось с клавиатуры. Если вместо const int n=4 ввести:
C++
1
2
3
int n;
cout<<"Enter n";
cin>>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
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    int j1min = 0, j2min = 1;
    const int n=4;
    double x[2][n]={ {1.,-5.4,2.,99.9},{-1.4,-0.4,-2.9,-99.9} };
    double distmin = (x[0][0] - x[0][1])*(x[0][0] - x[0][1]) + (x[1][0] - x[1][1])*(x[1][0] - x[1][1]);
    for (int j1 = 0; j1<n - 1; j1++)
        for (int j2 = j1 + 1; j2<n; j2++)
        {
            double dist = (x[0][j1] - x[0][j2])*(x[0][j1] - x[0][j2]) + (x[1][j1] - x[1][j2])*(x[1][j1] - x[1][j2]);
            if (dist<distmin)
            {
                j1min = j1;
                j2min = j2;
                distmin = dist;
            }
        }
    cout << "1 point " << x[0][j1min] << ',' << x[1][j1min] << endl;
    cout << "2 point " << x[0][j2min] << ',' << x[1][j2min] << endl;
    cout << "distance=" << sqrt(distmin) << endl;
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2015, 22:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задача на двумерный массив (C++):

задача на двумерный массив - C++
.Задана квадратная матрица. Поменять местами строку с максимальным элементом на главной диагонали со строкой с заданным номером m ...

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

Задача на двумерный массив - C++
Найти максимальный элемент матрицы

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

Задача (двумерный массив). - C++
Помогите пожалуйста решить задачу! В матрице n*m расположить элементы строки с индексом К, по возрастанию. Значение К, выводится....

Задача на двумерный массив - C++
Помогите решить задачу. Смысл понимаю, а написать код не могу( Даны натуральное число n и действительный квадратный массив размера nn....

5
Alexander Bakay
100 / 52 / 16
Регистрация: 15.12.2015
Сообщений: 318
Завершенные тесты: 2
18.12.2015, 23:11 #2
Сделайте двумерный динамический массив, в ином случае, с обычным придется работать лишь с размером равным константе и не как иначе...
0
Andrey1997
-1 / 2 / 0
Регистрация: 03.10.2015
Сообщений: 66
19.12.2015, 00:14  [ТС] #3
Цитата Сообщение от Alexander Bakay Посмотреть сообщение
Сделайте двумерный динамический массив
Сделал, все равно ошибка.

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
// SobolevIF55GVariant4Zad2.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    int j1min = 0, j2min = 1, n;
    cout << "enter n";
    cin >> n;
    double *NewMas = new double x[2][n];
    double *NewMas = { { 1., -5.4, 2., 99.9 }, { -1.4, -0.4, -2.9, -99.9 } };
    double distmin = (x[0][0] - x[0][1])*(x[0][0] - x[0][1]) + (x[1][0] - x[1][1])*(x[1][0] - x[1][1]);
    for (int j1 = 0; j1<n - 1; j1++)
        for (int j2 = j1 + 1; j2<n; j2++)
        {
            double dist = (x[0][j1] - x[0][j2])*(x[0][j1] - x[0][j2]) + (x[1][j1] - x[1][j2])*(x[1][j1] - x[1][j2]);
            if (dist<distmin)
            {
                j1min = j1;
                j2min = j2;
                distmin = dist;
            }
        }
    cout << "1 point " << x[0][j1min] << ',' << x[1][j1min] << endl;
    cout << "2 point " << x[0][j2min] << ',' << x[1][j2min] << endl;
    cout << "distance=" << sqrt(distmin) << endl;
    system("pause");
    return 0;
}
0
_Valera_
488 / 370 / 94
Регистрация: 27.01.2015
Сообщений: 1,588
19.12.2015, 00:21 #4
Цитата Сообщение от Andrey1997 Посмотреть сообщение
double *NewMas = new double x[2][n];
* * double *NewMas = { { 1., -5.4, 2., 99.9 }, { -1.4, -0.4, -2.9, -99.9 } };
переопределение имен

Добавлено через 1 минуту
Цитата Сообщение от Andrey1997 Посмотреть сообщение
double *NewMas = new double x[2][n];
что-то не то, х какой то?!

Добавлено через 1 минуту
C++
1
2
 double *х= new double [2];//двумерный так нельзя 
....
так наверно...
0
Andrey1997
-1 / 2 / 0
Регистрация: 03.10.2015
Сообщений: 66
19.12.2015, 18:12  [ТС] #5
Цитата Сообщение от _Valera_ Посмотреть сообщение
двумерный так нельзя
У меня в условии написано
Цитата Сообщение от Andrey1997 Посмотреть сообщение
С помощью двумерного действительного числового массива
Добавлено через 35 секунд
Помогите .

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
#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    int j1min = 0, j2min = 1, n;
    cout << "enter n";
    cin >> n;
    double *NewMas = new double x[2][n];
    double *NewMas = { { 1., -5.4, 2., 99.9 }, { -1.4, -0.4, -2.9, -99.9 } };
    double distmin = (x[0][0] - x[0][1])*(x[0][0] - x[0][1]) + (x[1][0] - x[1][1])*(x[1][0] - x[1][1]);
    for (int j1 = 0; j1<n - 1; j1++)
        for (int j2 = j1 + 1; j2<n; j2++)
        {
            double dist = (x[0][j1] - x[0][j2])*(x[0][j1] - x[0][j2]) + (x[1][j1] - x[1][j2])*(x[1][j1] - x[1][j2]);
            if (dist<distmin)
            {
                j1min = j1;
                j2min = j2;
                distmin = dist;
            }
        }
    cout << "1 point " << x[0][j1min] << ',' << x[1][j1min] << endl;
    cout << "2 point " << x[0][j2min] << ',' << x[1][j2min] << endl;
    cout << "distance=" << sqrt(distmin) << endl;
    system("pause");
    return 0;
}
Добавлено через 2 часа 50 минут
Компайлеру надо знать заранее какой будет размер массива, по этому мне выдает ошибку "expected constant expression". Но по условию надо вводить n с клавиатуры, а не использовать константу, кто-то может сказать как это делать??
0
_Valera_
488 / 370 / 94
Регистрация: 27.01.2015
Сообщений: 1,588
19.12.2015, 18:17 #6
Цитата Сообщение от Andrey1997 Посмотреть сообщение
кто-то может сказать как это делать??
читай динамические массивы, или вектор.
0
19.12.2015, 18:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2015, 18:17
Привет! Вот еще темы с ответами:

Двумерный массив (ЗАдача) - C++
Помогите! Дан двумерный массив (8,8). Найти максимальный элемент среди элементов строк Задачу нужно написать на языке Си

Задача на двумерный массив - C++
Нужен код, реализованный на C++ Реализуйте следующий алгоритм обработки двумерной матрицы : поиск вхождений вектора-образца в каждую...

Задача на двумерный массив - C++
Задан массив А, состоящий из n строк и m столбцов. Измените все элементы на противоположные по знаку. у меня получился такой код ...

Задача на двумерный массив - C++
Дан двумерный массив из 5 строк и 6 столбцов. Определить для каждого столбца максимальный элемент. Среди этих элементов найти минимальный.


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

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

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