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

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

Войти
Регистрация
Восстановить пароль
 
boris.102
0 / 0 / 0
Регистрация: 10.06.2012
Сообщений: 1
#1

Как оптимально обратиться в трем матрицам разной размерности - C++

13.06.2012, 13:29. Просмотров 384. Ответов 1
Метки нет (Все метки)

Имею несколько (пока з штуки) двумерных массивов. Размер массивов разный!
В зависимости от некоторого индекса, должен обращаться к одному из этих массивов. Алгоритм работы с массивом довольно длинный, поэтому не хочется плодить три разных ветки в программе, а вот как передать именно нужный массив - не знаю...
Если бы массивы были одномерные, возможно получилось бы просто присвоить некоему указателю имя массива. А из-за двумерности не получается.
Уточняю - массивы не динамические, созданы и определены ранее.

extern u32 ris1[NUM_R1][7];
extern u32 ris2[NUM_R2][15];
extern u32 ris3[NUM_R3][31];

Добавлено через 2 часа 43 минуты
один вариант я знаю:
объявить дополнительный (буферный) массив максимального размера из использованных и в зависимости от индекса поэлементно переписать в него нужный массив.
Но это как то некрасиво
как бы тут указатель на массив передать и обойтись без этого буфера?
Когда массив одномерный вроде можно присвоить указателю имя массива, но вот с двумерным не знаю как быть...
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2012, 13:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как оптимально обратиться в трем матрицам разной размерности (C++):

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

Обработка массивов разной размерности - C++
Найти суммы нечетных отрицательных элементов каждой строки матрицы A(3,3) и сохранить их в массиве B.

Обработка массивов разной размерности - C++
Найти произведения четных положительных элементов каж- дой строки матрицы A(3,3) и сохранить их в массиве B Добавлено через 3 часа...

Даны два одномерных массива разной размерности. найти элементы принадлежащие и тому и другому массиву - C++
Помогите пожалуйста! Даны два одномерных массива разной размерности. найти элементы принадлежащие и тому и другому массиву. (на языке...

С помощью функции определения среднего значения элементов массива обработать два массива разной размерности - C++
Помогите составить программу с использованием только функции. Эту тему прошли, но свое задание я так и не сделал, т.к не совсем разобрался...

Как перемножить две матрицы разной размерности - C#
Всем доброго дня! Столкнулся с проблемой, что не могу перемножить матрицы в C#. Может вы подскажете, как это сделать. Матрицы...

1
soft.creator
104 / 104 / 4
Регистрация: 17.10.2010
Сообщений: 283
13.06.2012, 14:48 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Я бы сделал так:
C++
1
2
3
4
5
6
7
8
9
10
void useArray(u32* arr, int stride) 
{
    int x = ..., y = ...; // тут мы получаем столбец и строку элемента, с которым работаем
    element = arr + y * stride + x; // двумерные массивы в C/C++ хранятся по строкам
    printf("%d", *element);
}
 
useArray(&ris1[0][0], 7);
useArray(&ris2[0][0], 15);
useArray(&ris3[0][0], 31);
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2012, 14:48
Привет! Вот еще темы с ответами:

Сложение операндов разной размерности - Assembler
Здравствуйте! Каким образом можно сложить два операнда, если оба они могут быть словами, оба - байтами или один - слово, а другой байт....

Массивы разной размерности в процедуре - Pascal ABC
uses crt; type amas=array of real; bmas=array of real; Var a:amas;b:bmas; i:integer; min:real; max:real; Procedure...

Обработка массивов разной размерности - Pascal
Даны три массива А, В и C. Сформировать массивы А1, В1 и С1, содержащие положительные нечетные элементы массивов А, В и С Нужна помощь...

Создайте 2 массива разной размерности - Pascal
Создайте 2 массива разной размерности в виде шахматной доски.(нужно использовать процедуры)


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

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

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