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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2016, 11:51   #1
triple__h
Новичок
Джуниор
 
Регистрация: 26.12.2016
Сообщений: 2
По умолчанию Определитель квадратной матрицы

Добрый день, такая проблема, при запуске программы, ввожу размерность матрицы и программа вылетает.
Код:
#include <stdio.h>
#include <math.h>
#include <windows.h>
#include <conio.h>


void GetMatr(int **mas, int **p, int i, int j, int m) {
  int ki, kj, di, dj;
  di = 0;
  for (ki = 0; ki<m-1; ki++) { // проверка индекса строки
    if (ki == i) di = 1;
    dj = 0;
    for (kj = 0; kj<m - 1; kj++) { // проверка индекса столбца
      if (kj == j) dj = 1;
      p[ki][kj] = mas[ki + di][kj + dj];
    }
  }
}


int Opredelitel(int **a,int m)
{
int i,j,k,opr,d,n;
int **p;
p=(int**)calloc(m,sizeof(int*));
for (i=0;i<n;i++)
    p[i]=(int*)calloc(m,sizeof(int));
k=1;
opr=0;
j=0;
n=m-1;
if (m<1) printf ("error");
if (m==1)
    {
        opr=a[0][0];
    }
if (m==2)
    {
        opr=(a[0][0]*a[1][1])-(a[1][0]*a[0][1]);
    }
if (m>2)
    {
        for (i=0;i<m;i++)
        {
             GetMatr(a, p, i, 0, m);
            //вызов функции получения матрицы с вычеркунтым i-столбцои и j-строкой

        opr=opr+k*a[i][0]*Opredelitel(p,n);
        k=-k;
        }
    }
return opr;
}


int main()
{
int **A;
int i, j, n, det;
srand(time(NULL));
printf ("Vvedite razmernost: ");
scanf ("%d",&n);
A=(int**)calloc(n,sizeof(int*));
for (i=0;i<n;i++)
    A[i]=(int*)calloc(n,sizeof(int));
for (i=0;i<n;i++)
    for (j=0;j<n;j++)
        A[i][j]=rand()%10;
for (i=0;i<n;i++){
    printf ("\n");
    for (j=0;j<n;j++){
    printf ("%3d ",A[i][j]);
    }
}
det=Opredelitel(A,n);
printf ("Opredelitel raven : %d",det);

return 0;
}
triple__h вне форума Ответить с цитированием
Старый 26.12.2016, 13:10   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,758
По умолчанию

Цитата:
for (i=0;i<n;i++)
p[i]=(int*)calloc(m,sizeof(int));
Копи-паста она такая... n локальная, неинициализированная переменная, значение там какой бох на душу положит.
p51x вне форума Ответить с цитированием
Старый 26.12.2016, 18:53   #3
triple__h
Новичок
Джуниор
 
Регистрация: 26.12.2016
Сообщений: 2
По умолчанию

Черт, спасибо тебе огромное, ты не представляешь, как сильно ты помог мне. Я 2 дня в глаза долбился с этой задачей....
triple__h вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определитель матрицы youmustknowme Помощь студентам 2 27.06.2012 17:38
определитель матрицы mozg2011 Общие вопросы Delphi 2 10.04.2012 17:55
определитель квадратной матрицы BloodMaX Общие вопросы C/C++ 2 02.03.2012 15:57
Определитель матрицы 2 на 2 С++ Mashul'ka Помощь студентам 1 03.11.2010 00:08
Определитель квадратной матрицы Tomoyo Помощь студентам 22 04.11.2008 22:37