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; } }
|