0 / 0 / 0
Регистрация: 27.11.2009
Сообщений: 3
1

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

27.11.2009, 20:26. Показов 1782. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2009, 20:26
Ответы с готовыми решениями:

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

Передача одномерных массивов и матриц в функцию
Доброго дня! Обучаюсь по книге Кочана и после прохождения соответствующих глав книги осталось...

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

Сумма квадратных динамических матриц
Помогите пажалуйста, есть ошибки в коде, можете предложить свои варианты. Задание дословно:...

4
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
27.11.2009, 20:33 2
да вроде так было
C++
1
void Func(int **A, const int N, const int M)
1
0 / 0 / 0
Регистрация: 27.11.2009
Сообщений: 3
27.11.2009, 21:17  [ТС] 3
а есть какое-то приведение типов? (ясное дело чуть подправить тип матрицы)...
0
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
27.11.2009, 21:23 4
не понял вопроса. приведения к чему? что чего хотите добиться?
0
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.11.2009, 23:46
Помогаю со студенческими работами здесь

Формирование и редактирование динамических матриц
Составить программу формирования динамических матриц А и В (n строк, m столбцов) случайными...

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

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

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

Составить программу формирования динамических матриц
Составить программу формирования динамических матриц А и В (n строк, m столбцов) случайными...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru