Построить вектор из производного каждого ряда, и найти производное вектора

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

Вот Код:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define N 15

int multiply (int* a, int n)
{
        int i, dobutok = 1;


        for (i=0; i<n; i++)

                if (a[i] == 0)
                        return 0;
                else
                        dobutok *= a[i];
        return dobutok;
}
void change(int a[][N], int n)
{
int i, j, k, x;
        for (i=n-1; i; i--)
                for (j=0; j<i; j++)
                         if (multiply(a[j], n) > multiply(a[j+1], n))
                                for (k = 0; k < n; k++)
                                        x = a[j][k],
                                        a[j][k] = a[j+1][k],
                                        a[j+1][k] = x;
}
int mult(int n, int i, int* a)
{
        int j, dobu = 1,vector = 1;
        for (j=0; j<n; j++)
             dobu *= a[j];
             vector *= dobu;
        return vector;

}
 int main()
{
  int n,a[N][N],i,j,*array,vector=0,dobutok;
  printf("Enter n: ");
  scanf("%d",&n);
  array=malloc(n*sizeof(int));

  srand(time(NULL));

 for (i=0; i<n; i++, puts(""))
                for (j=0; j<n; j++)

                        printf("%3d", a[i][j] = 1 + rand() %11);
        puts("");
   for (j=0; j<n; j++){
        printf("%d ", array[i] = mult(n, i, a));
}
printf("\n");
printf("\n");
change(a,n);
for (i=0; i<n; i++, puts(""))


                for (j=0; j<n; j++)

                        printf("%3d", a[i][j]);
  }

Ответы (0 шт):