Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 25.08.2013
Сообщений: 5

Многомерный массив значений, размерность которого возрастает. Оцените код

25.08.2013, 23:35. Показов 1002. Ответов 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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
// Исходный код написан в среде разработки Qt
 
// пусть требуется задать на плоскости произвольное количество ломаных линий с произвольным количеством точек в каждой
// причем не представляется возможным определить ни количество этих линий, ни количество точек, из которого они состоят
 
// Чтобы не перегружать код циклами, приведен пример исполнения задачи для двух прямых линий, заданных двумя точками
// Примечание: кроме x и у может быть и z, и t и даже больше...
 
 
 
#include <QCoreApplication>
#include <Qvector>
#include <array>
#include <iostream>
 
using namespace std;
 
 
 
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
 
    QVector < QVector<std::array<int, 2> > > v; // Вектор векторов
    QVector<std::array<int, 2>> v2; // Вектор массивов
    std::array<int, 2> arr; // Массив
 
    // значения координат 1-й точки 1-й линии
    arr[0] = 1; // x = 1
    arr[1] = 2; // y = 2
 
    v2.push_back(arr); // записать результаты в вектор массивов
 
    // значения координат 2-й точки 1-й линии
    arr[0]= 10; // x = 10
    arr[1] = 20; // y = 20
 
    v2.push_back(arr); // записать результаты в вектор массивов
 
    // точек может быть больше....
 
 
    // а теперь нужно определить точки для 2-й линии. Алгоритм повторяется точь-в-точь (можно написать отдельную функцию)
 
    v.push_back(v2); // предварительно запишем точки, относящиеся к 1-й линии в вектор векторов
 
    v2.clear(); // очистим вектор
 
    // значения координат 1-й точки 2-й линии
    arr[0] = 100; // x = 1
    arr[1] = 200; // y = 2
 
    v2.push_back(arr); // записать результаты в вектор массивов
 
    // значения координат 2-й точки 2-й линии
    arr[0]= 1000; // x = 10
    arr[1] = 2000; // y = 20
 
    v2.push_back(arr); // записать результаты в вектор массивов
 
    // точек может быть больше....
 
    v.push_back(v2); // опять запишем  точки, относящиеся уже к 2-й линии, в вектор векторов
 
    // и так далее, линий может быть сколь угодно много
 
 
    // как получить доступ к сохраненным значениям
    v2 = v[0]; // get line 1
    arr = v2[1]; // get point 2
 
    int num = arr[1]; // get y;
 
    cout << num;
 
 
 
    
    return a.exec();
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.08.2013, 23:35
Ответы с готовыми решениями:

Дан многомерный массив из 0 и 1; определить максимальную размерность подмассива, содержащего одни нули
Дан массив из 0 и 1.Определить максимальную размерность под массива,содержащего одни нули.

Есть ли возможность инициализировать многомерный массив, если его размерность заранее неизвестна?
Теоретический вопрос: есть ли возможность инициализировать многомерный массив, если его размерность заранее неизвестна (то есть должна быть...

Как создать массив, размерность которого будет рандомная
Всем привет, подскажите как создать массив, размерность которого будет рандомная, то есть количество строк и столбцов заранее не известно а...

3
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
26.08.2013, 07:36
SVladimir,
C++
1
 std::pair <int, int>
- используйте его. Проще будет. Или сделайте свою структуру point2d, скажем

pair (cplusplus.com)
1
0 / 0 / 0
Регистрация: 25.08.2013
Сообщений: 5
27.08.2013, 20:08  [ТС]
Спасибо за совет. Итак, пока считаю этот код вполне эффективным для решения поставленной задачи, раз уж никто не высказал никаких критических замечаний

Добавлено через 7 минут
Цитата Сообщение от nexen Посмотреть сообщение
Или сделайте свою структуру point2d
Поясните, пожалуйста
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
27.08.2013, 20:18
Цитата Сообщение от SVladimir Посмотреть сообщение
Поясните, пожалуйста
точки надо хранить не в двумерном массиве чисел, а в одномерном массиве точек.
Цитата Сообщение от SVladimir Посмотреть сообщение
размерность которого возрастает
для работы с такими данными рекомендуется либо заранее вызывать reserve для вектора, либо подумать не удачнее ли будет заменить вектор деком или списком? В конце концов, может тебе и не нужен непременно "массив точек", а даже больше подойдёт "список точек".
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.08.2013, 20:18
Помогаю со студенческими работами здесь

Как объявить массив, размерность которого заранее не известна
как определить массив если мы не знаем сколько элементов в нем будет? Заголовок продумываем

Создать динамический массив, размерность которого будет варьироваться
Здравствуй киберфорум, пришлось столкнуться с одной задачей, алгоритм выполнения которой понятен и просчитан, но так как планируется ввод...

Как создать трехмерный массив, размерность которого задается с клавиатуры?
Visual Studio требует константы, и если я хочу вводить размерность с клавиатуры, то надо динамично выделять память. Как это реализовать для...

Добавить Таблицу значений в многомерный массив
Помогите я новичок в 1С, как ВСЮ таблицу значений добавить в многомерный массив. Поясните пожалуйста кто может.

Передача в многомерный массив диапазоны значений - работаю в AnyLogic
Всем привет. Добавлено через 15 минут Всем привет. Застрял на кодировке. Есть массив Array . Три столбца хранят значения min,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru