![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Пользователь
Регистрация: 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"; } } Спасибо за внимание. |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 30.06.2010
Сообщений: 20
|
![]()
Я разобркался с проблемой. Глупая ошибка в коде, пример котороя я тут не привел. Всем извените.
Тема закрыта. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |