Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
www.ru
0 / 0 / 0
Регистрация: 27.11.2009
Сообщений: 3
1

Передача динамических матриц в функцию

27.11.2009, 20:26. Просмотров 1614. Ответов 4
Метки нет (Все метки)

Здравствуйте, ребята!

У меня очень простой вопрос.

Я работаю с очень большими матрицами. Они создаются в куче:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
const N = 10000;
 
int **MA = new int * [N];
for(int i = 0; i < N; i++){
      MA[i] = new int[N];
}
 
...
 
 
for(int i = 0; i < N; i++){
      delete [] MA[i];
}
delete [] MA;
Как передать матрицу в подобную функцию:

C++
1
2
3
4
5
6
7
void InputMatrix(int M[][N]){
    for (int i = 0; i < N; i++){
        for (int j = 0; j < N; j++){
            M[i][j] = 1;
        }
    }
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2009, 20:26
Ответы с готовыми решениями:

Инициализация динамических матриц в с++
Необходимо реализовать класс матриц, вот мой набросок: // Класс.cpp: определяет точку входа для...

Ошибки при умножении динамических матриц
В строке ввода в вызывающее окружение матрицы выдает ошибку : &quot;Вызвано исключение по адресу...

Перемножение матриц с использованием динамических массивов
Всем здравствуйте) Программа не считает матрицу С (С=A*B). В чём дело не понимаю. #include...

Организация программ по обработке динамических матриц
Заданы матрицы: А(15,6), В(8,12), С(12,9). В каждой из матриц найти и удалить максимальные элементы...

Вычисление произведения двух матриц (матрицы реализовать в виде динамических массивов)
написать программу для вычисления произведения двух матриц.матрицы реализовать в виде динамических...

4
TanT
эволюционирую потихоньку
467 / 465 / 91
Регистрация: 30.06.2009
Сообщений: 1,399
27.11.2009, 20:33 2
да вроде так было
C++
1
void Func(int **A, const int N, const int M)
1
www.ru
0 / 0 / 0
Регистрация: 27.11.2009
Сообщений: 3
27.11.2009, 21:17  [ТС] 3
а есть какое-то приведение типов? (ясное дело чуть подправить тип матрицы)...
0
TanT
эволюционирую потихоньку
467 / 465 / 91
Регистрация: 30.06.2009
Сообщений: 1,399
27.11.2009, 21:23 4
не понял вопроса. приведения к чему? что чего хотите добиться?
0
www.ru
0 / 0 / 0
Регистрация: 27.11.2009
Сообщений: 3
27.11.2009, 23:46  [ТС] 5
не хотелось бы менять интерфейс передачи параметров в функции (а их много) а за ним и сам код функций.

Добавлено через 7 минут
Наверное придется создавать свой класс матриц, в конструкторе распределить память методом new, в деструкторе освободить методом delete и перегрузить операцию []. Тогда в функциях поменяется только заголовок (а именно имя типа матрицы), а код останется неизменным. Насколько эффективно такое решение?

Добавлено через 1 час 18 минут
Где-то так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class matrix{
    int N;
    int **Ref;
public:
    matrix(int newN){
        N = newN;
        Ref = new int * [N];
        for(int i = 0; i < N; i++){
            Ref[i] = new int[N];
        }
    }
 
    ~matrix(){
        for(int i = 0; i < N; i++){
            delete [] Ref[i];
        }
        delete [] Ref;
    }
 
    int *operator[](int i){
        return Ref[i];
    }
};
0
27.11.2009, 23:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2009, 23:46

Передача динамических массивов в функции
Требования:Программа должна демонстрировать два варианта доступа к элементам массивов во...

Класс для динамических матриц. После ввода элементов матрицы программа аварийно закрывается
В программе я создал класс, отвечающий за ввод и вывод динамической матрицы. Однако после ввода...

Передача динамических массивов в функции. А точнее отдельных частей
Вопрос до жути простой, но мне не понять. К примеру я хочу передать в функцию отдельно одну строку,...


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

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

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