allora nel programma sottostante mi viene dato un errore alla linea 62 (quella in rosso), l'errore è:
det.c: In function `det':
det.c:62: warning: passing arg 4 of `det' from incompatible pointer type
det.c:62: void value not ignored as it ought to be
codice:
#include <stdio.h>
#define SIZE 2
/* PROTOTIPO FUNZIONE */
void scambia_righe(int **m, int size, int r1, int r2, int start);
void det(int **m, int size, int start, int **ris);
/* PROGRAMMA CHIAMANTE */
int main()
{
int **m;
int i, j, n, *ris;
printf("Inserisci la dimensione n: ");
scanf("%d", &n);
if (!(m = (int **)malloc(n*n*sizeof(int))))
abort();
for(i=0; i<n; ++i)
for(j=0; j<n; ++j)
{
printf("Inserisci il valore dell'elemento (%d,%d): ", i+1, j+1);
scanf("%d", &m[i][j]);
}
det(m,n,0, &ris);
printf("Determinante = %d \n", ris);
return 0;
free(m);
}
void scambia_righe(int **m, int size, int r1, int r2, int start){
int i, tmp;
for(i=start; i<size; ++i)
{
tmp = m[r1][i];
m[r1][i] = m[r2][i];
m[r2][i] = tmp;
}
}
void det(int **m, int size, int start, int **ris)
{
int r;
int sgn = 1;
int risultato = 0;
/* CASO DI UNA MATRICE 1x1 */
if(start == (size - 1))
*ris = (int *)m[size-1][size-1];
for(r=start; r<size; ++r)
{
if(r != start)
{
sgn = -1; /*scambiando due righe il determinante del minore cambia di segno*/
scambia_righe(m, size, start, r, start);
}
risultato += sgn * m[start][start] * det(m, size, start+1, &risultato);
if(r != start)
scambia_righe(m, size, start, r, start);
}
*ris = (int *)risultato;
}