Построить вектор из производного каждого ряда, и найти производное вектора
Немогу понять в чем ошибка, вместо производного каждого ряда, выводит производное только первого ряда несколько раз. Так же он перестраивает матрицу по производному рядов в поредке роста.
Вот Код:
#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]);
}