Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2012, 23:52   #1
Leiph
Пользователь
 
Регистрация: 30.06.2010
Сообщений: 20
По умолчанию Проблемы при передаче двумерного динамического массива в функцию С++

Здравствуйте!
У меня есть некая функция, куда мне необходимо передавать матрицу (двумерный динамический массив), но в одном конкретном месте программы это происходит некорректно, то есть содержимое массива искажается. Как бы странно это не звучало, но это так. В матрице остается только первая строка а все остальные пусты. Мог бы пенять на то что я как-то неправильно передаю массив, и из-за этого он "ломается", но в программе есть схожие функции, где я поступаю точно так же и все проходит гладко. Посмотрите пожалуйста код, может я где-то ошибся.
Вот моя функция main где специализируется передаваемая в функцию
obr_matr матрица matrix_A, с которой и начинаются проблемы внутри функции.

int main(int argc, char** argv)
{
int n;
cout<<"Set dimension of matrix: ";
cin>>n;
cout<<"\n";
float **matrix_A = new float*[n];
for(int i=0;i<n;i++) matrix_A[i] = new float[n];

srand(time(NULL));
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++) matrix_A[i][j]=rand()%100+1;
}

cout<<"Matrix A:"<<endl;
cout<<"\n";
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++) cout<<matrix_A[i][j]<<" ";
cout<<"\n";
}

float **obr_matr_A=new float*[n];
for(int i=0;i<n;i++) obr_matr_A[i]=new float[n];
obr_matr(matrix_A,obr_matr_A,n);

_getch();

return 0;
}

Это код функции obr_matr внутри которой возникают проблемы
void obr_matr(float **matr,float **matr_obr,int mat_dim)
{
float det_A=mat_opred(matr,mat_dim);

cout<<"matr \n";
for(int i=0;i<mat_dim;i++)
{
for(int j=0;j<mat_dim;j++) cout<<matr[i][j]<<" ";
cout<<endl;
}
cout<<"\n";

float **alg_dop_matr=new float*[mat_dim];
for(int i=0;i<mat_dim;i++) alg_dop_matr[i]=new float[mat_dim];
matr_alg_dop(matr,alg_dop_matr,mat_ dim);

float **transp_matr=new float*[mat_dim];
for(int i=0;i<mat_dim;i++) transp_matr[i]=new float[mat_dim];
matr_transp(alg_dop_matr,transp_mat r,mat_dim);

for(int i=0;i<mat_dim;i++)
{
for(int j=0;j<mat_dim;j++) matr_obr[i][j]=(1/det_A)*transp_matr[i][j];
}

for (int i=0;i<mat_dim;i++) delete [] alg_dop_matr[i];
for (int i=0;i<mat_dim;i++) delete [] transp_matr[i];

cout<<"\n";
cout<<"Inverse matrix A:"<<endl;
cout<<"\n";
for(int i=0;i<mat_dim;i++)
{
for(int j=0;j<mat_dim;j++) cout<<matr_obr[i][j]<<" ";
cout<<"\n";
}
}
Вот функция где передача осуществляется так же, но проблем никаких нет.
void matr_transp(float **matr,float **transp_matr,int mat_dim)
{
for(int i=0;i<mat_dim;i++)
{
for(int j=0;j<mat_dim;j++) transp_matr[j][i]=matr[i][j];
}

cout<"\n";
cout<<"Transposed matrix:"<<endl;
cout<"\n";
for(int i=0;i<mat_dim;i++)
{
for(int j=0;j<mat_dim;j++) cout<<transp_matr[i][j]<<" ";
cout<<"\n";
}

}
Спасибо за внимание.
Leiph вне форума Ответить с цитированием
Старый 23.04.2012, 13:26   #2
Leiph
Пользователь
 
Регистрация: 30.06.2010
Сообщений: 20
По умолчанию Тема закрыта. Можно удалять.

Я разобркался с проблемой. Глупая ошибка в коде, пример котороя я тут не привел. Всем извените.
Тема закрыта.
Leiph вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FindFirstFile/FindNextFile. Намудрил что-то с адресами при передаче в функцию RAZOR1703 Win Api 2 06.12.2011 04:44
Матрица из двумерного динамического массива. Abrokadawr Фриланс 5 03.11.2011 22:28
Ввести элементы динамического двумерного массива Alexeytur Помощь студентам 1 28.01.2011 10:01
Передача двумерного динамического массива в метод Дырдин Общие вопросы C/C++ 1 19.03.2010 09:45
Удаление строки из двумерного динамического массива hidraulik Общие вопросы C/C++ 0 08.12.2009 10:48