Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
1 / 1 / 0
Регистрация: 02.01.2015
Сообщений: 16
1

Использование одних и тех же данных двумя массивами

26.03.2016, 17:20. Просмотров 417. Ответов 7
Метки нет (Все метки)


Всем доброго времени суток.
Столкнулся с такой проблемой: у меня есть большой трёхмерный массив и мне нужен второй массив (тоже трёхмерный) который можно будет как бы "двигать" по первому массиву и использовать попавшие в этот второй массив данные из первого массива. То есть допустим у меня существует массив A[100][100][100] и мне нужен массив B[3][3][3] который можно шажками передвигать по массиву A получая данные из определённой области массива A в массив B. Будто маленький куб передвигается внутри большого. Подскажите пожалуйста как подобное реализовать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.03.2016, 17:20
Ответы с готовыми решениями:

Использование одних и тех же функций для разных форм
Здравствуйте! Есть на данный момент форма название формы сейчас - Model. Но в будущем она будет...

Многократное использование блоков одних и тех же инструкций в одном обработчике
Как правильнее организовать выполнение периодически повторяющихся инструкций в коде? Функции?...

Обновление одних и тех же данных в EF
Я изучаю EF и вычитал, что если 2 пользователя редактируют одни и те же данные, то второму...

Обновление одних и тех-же данных в двух базах данных
Всем здрасте, как варианты есть для того чтобы обновить данные на двух серверах сразу тоесть когда...

7
125 / 117 / 67
Регистрация: 07.11.2014
Сообщений: 788
26.03.2016, 17:29 2
Три новых переменных для индекса нужны Вам. Делаете со своим большим трехмерным массивов что-то, ставите, допустим, условие if(A[i][j][k]...) {B[q][w][e]=A[i][j][k]; q++;/*или w++, e++*/} и т.д..
Затем обычный вызов, for (int a = 0; a < q; ...)
1
1 / 1 / 0
Регистрация: 02.01.2015
Сообщений: 16
26.03.2016, 17:58  [ТС] 3
Спасибо, но как я понял таким образом я смогу получать содержимое ячеек по одной, а чтобы передвинутся мне придётся заново вызывать цикл и снова заполнять массив B. Нет ли более быстрого способа это сделать? Просто у меня будут генерироватся сотни тысяч таких массивов B и они будут проходить путь значительно больше своего размера.
0
Эксперт С++
8384 / 3927 / 856
Регистрация: 15.11.2014
Сообщений: 8,860
26.03.2016, 18:50 4
Цитата Сообщение от XFAKTORX Посмотреть сообщение
чтобы передвинутся мне придётся заново вызывать цикл и снова заполнять массив B. Нет ли более быстрого способа это сделать?
не заполнять массив.

что бы получить значение элемента малого куба нужно:
знать значения большого куба.
знать координаты малого куба относительно большого.
знать координаты запрашиваемого элемента малого куба
относительно малого куба.

копировать данные большого куба в малый,
только для того, что бы задать координаты последнего - не нужно.
1
1 / 1 / 0
Регистрация: 02.01.2015
Сообщений: 16
26.03.2016, 19:19  [ТС] 5
Цитата Сообщение от hoggy Посмотреть сообщение
копировать данные большого куба в малый,
только для того, что бы задать координаты последнего - не нужно.
Но мне нужны значения большого куба в области размером с этот малый куб, собственно ради этого малый и затевается. Большой куб это координатная сетка и мне нужно постоянно проверять находится что-то в данной области координат или нет. Собственно если нет какого-то удобного метода позволяющего малому кубу использовать данные большого, то я наверно что-то другое придумаю).
0
Модератор
Эксперт по электронике
8356 / 6202 / 834
Регистрация: 14.02.2011
Сообщений: 21,551
26.03.2016, 19:50 6
хоть бы сказал что делать то будешь с малым кубом
может его нет нужды вообще использовать

вот например как можно рассчитать сумму всех элементов входящих в "малый куб" без использования оного
C++
1
2
3
4
5
6
7
8
9
10
11
int func (int i, int j, int k)
{
 int sum=0;
 for(int i1=i;i<3+i;i1++)
   for(int j1=j ;j1<3+j;j1++)
   for(int k1=k;k1<3+k;k1++)
    sum+=A[i1][j1][k1];
 
 
return sum;
}
где i j k начальные смещения в "большом кубе"
но это не рабочая функция , а иллюстрация метода
поскольку нет проверки выхода за пределы массива, и сам массив считается глобальным
1
Эксперт С++
8384 / 3927 / 856
Регистрация: 15.11.2014
Сообщений: 8,860
26.03.2016, 20:35 7
Цитата Сообщение от XFAKTORX Посмотреть сообщение
Но мне нужны значения большого куба в области размером с этот малый куб,
для этого не нужно копировать сами данные
из большого куба в маленький.

достаточно просто получать значения большого,
через позицию маленького.
1
1 / 1 / 0
Регистрация: 02.01.2015
Сообщений: 16
26.03.2016, 21:08  [ТС] 8
Цитата Сообщение от ValeryS Посмотреть сообщение
хоть бы сказал что делать то будешь с малым кубом
Двигать вместе с объектом находящимся в центре куба, а с помощью куба проверять что этот объект никуда не врежется, ну или врежется и тогда мне надо знать куда.
Цитата Сообщение от ValeryS Посмотреть сообщение
вот например как можно рассчитать сумму всех элементов входящих в "малый куб" без использования оного
Спасибо, собственно с помощью суммы я и хотел проверять.
Цитата Сообщение от hoggy Посмотреть сообщение
достаточно просто получать значения большого,
через позицию маленького.
Да, спасибо теперь я понял идею.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.03.2016, 21:08

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

Использование одних данных по ссылке в разных формах
Есть несколько форм - главная и побочные. В главной форме есть несколько полей-классов. При вызове...

Использование одних данных из DataSet в нескольких формах
Доброе время суток!! Помогите пожалуйста! Я пишу приложение с использованием DataSet и у меня...

Использование данных одних переменных в нескольких формах
Всем привет! начал осваивать Visual Studio 2010 с языком Basic, начал писать свою первую...

Использование указателей для работы с массивами данных
С клавиатуры введено длинное беззнаковое целое число. Образовать массив из цифр этого числа. Затем...

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

Использование операторов ввода (InputBox) и вывода (MsgBox) при работе с массивами данных
Составить программу вычисления номера столбца матрицы размера 4x4, состоящей из нулей и единиц,...


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

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

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