Hola a todos, soy nuevo en este foro y me gustaría saber si alguien puede ayudarme con este problema.
me dice que tengo siete veces el mismo error, que no esta permitido declarar una funcion antes de '{' y no se que hacer.
{
double **crearMatriz(int m, int n);
int triang(int n, double **a, double *b);
int pivot(int n, int k, double **a);
void sust(int n, double **a, double *b, double *x);
void escribir(int n, double *x);
void main(void)
{
int i, j, n, vRet;
double **a, *x, *b;
/* Lectura de datos y creaci¢n dinamica de matrices y vectores */
printf("Numero de ecuaciones: ");
scanf("%d", &n);
a=crearMatriz(n, n);
printf("\nMatriz del sistema:\n");
for (i=0; i<n; i++)
for(j=0; j<n; j++) {
printf("a(%d, %d): ", i+1, j+1);
scanf(" %lf", &a[j]);
}
b=calloc(n, sizeof(double));
x=calloc(n, sizeof(double));
printf("\nTermino independiente:\n");
for (i=0; i<n; i++) {
printf("b(%d): ", i+1);
scanf(" %lf", &b);
}
/* Triangularizacion de la matriz */
vRet=triang(n, a, b);
if (vRet!=1) {
printf("Ha aparecido un pivot nulo o muy pequeño. Agur! \n");
exit(1);
}
/* Vuelta atras */
sust(n, a, b, x);
/* Escritura de resultados */
escribir(n, x);
}
/* Fin de main() */
/* Funcion para hallar el pivot de la columna k */
int pivot(int n, int k, double **a)
{
int i, imaximo;
double maximo=0.0;
double va(double);
for (i=k; i<n; i++) {
if (maximo<va(a[k])) {
maximo=va(a[k]);
imaximo=i;
}
}
return imaximo;
}
/* Funcion para realizar la triangularizacion de una matriz */
int triang(int nec, double **a, double *b) {
int i, j, k, ipivot, error;
double fac, *temp;
double va( double );
for (k=0; k<nec-1; k++) {
ipivot=pivot(nec, k, a);
/* intercambio de los punteros a las filas k e imaximo */
temp=a[k];
a[k]=a[ipivot];
a[ipivot]=temp;
fac=b[k];
b[k]=b[ipivot];
b[ipivot]=fac;
for (i=k+1; i<nec; i++) {
if (va(a[k][k]) < EPS)
return error=-1;
fac=-a[k]/a[k][k];
for (j=k; j<nec; j++)
a[j]+=a[k][j]*fac;
b+=b[k]*fac;
}
}
return error=1;
}
void sust(int n, double **a, double *b, double *sol) {
int i, k;
double sum;
for (k=n-1; k>=0; k--) {
sum=0.0;
for (i=k+1; i<n; i++)
sum+=a[k]*sol;
sol[k]=(b[k]-sum)/a[k][k];
}
}
double **crearMatriz(int m, int n) {
double **matriz, *mat;
int i;
matriz=calloc(m, sizeof(double *));
matriz[0]=mat=calloc(m*n, sizeof(double));
for(i=1; i<m; i++)
matriz=mat+n*i;
return matriz;
}
void escribir(int n, double *solucion) {
int i;
printf("\nEl vector solucion es: \n");
for (i=0; i<n; i++)
printf("solucion(%d)= %lf\n", i, solucion);
}
double va(double u) {
if (u<0.0)
return -u;
else
return u;
}
}