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

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

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

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

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

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

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

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

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

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

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

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

Как вывести длину столбца в динамическом массиве с разной длинной строк? - C++
как вывести длину столбца в динамическом массиве с разной длинной строк?

Как поместить строки разной длинны в двумерный массив? (файловый ввод/вывод) - C++
Всем доброго времени суток! Есть файл с нескольким количеством строк и все эти строки разной длинны, как мне их поместить в двумерный...

Как сделать, чтобы два проекта с разной кодировкой работали в одном объединённом проекте? - C++
Добрый день подскажите есть два проекта в одном стоит многобайтовая кодировка в другом юникод, по отдельности все нормально компилируется...

3 задачки по матрицам - C++
Вот задачки, заранее спасибо. Задали на завтра 6 задач, вот 3 из них 1. Дана квадратная матрица порядка N. Вывести строку матрицы, в...

Общая программа по матрицам - C++
class Matrix { public: double **matrix; int row; //Кол-во строк int col; //Кол-во столбцов Matrix(int m, int...

Оптимально поделить шоколадку - C++
Здравствуйте, есть такая задача, на первый взгляд вполне прозрачна: Есть шоколадка N * M. Винни и Пятачок играют в игру: за один ход...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soft.creator
103 / 103 / 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);
Ответ Создать тему
Опции темы

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