problema al leer gauss desde un archivo

Iniciado por Idmus, 13 Noviembre 2013, 19:53 PM

0 Miembros y 1 Visitante están viendo este tema.

Idmus

#include <stdio.h>
#include <stdlib.h>

         FILE *ar;
         
int TotalLineas(char b[20])
{
    ar = fopen(b, "r");
    int ch,num_lineas=0;
    while((ch=fgetc(ar)) != EOF)
      if (ch == '\n')
         num_lineas++;
    return (num_lineas+1);
}
   
       

void LlenarMatriz(float a[50][50], int *n)
{
     
     int i, j;
     char b[20];
     
     printf("Nombre del archivo: ");
     gets(b);
     ar = fopen(b, "r");
     *n= TotalLineas(b);
     
     for(i=0; i<*n; i++)
     {
              for(j=0; j<*n+1; j++)
              {
                       fscanf(ar, "%d", &a[i][j]);
                     //  printf("%i", a[i][j]);
              }
     }
}

void ImpMatriz(float a[50][50], int n)
{
     int i, j;
     
     for(i=0; i<n; i++)
     {
              for(j=0; j<n+1; j++)
              {
                       printf("%i\t", a[i][j]);
              }
              printf("\n");
     }
}

void GaussJordan(float a[50][50], int n)
{
     float piv, x, y;
     int i, j, k;
     
     for(i=0; i<n; i++)
     {
              for(j=0; j<n; j++)
              {
                       if(j != i)
                       {
                            x = a[i][j];
                            y = a[j][i];
                            for(k=0; k<n+1; k++)
                                     a[j][k] = a[j][k]/y*x+a[i][k];
                       }
              }
     }
}

int main()
{
    int n;
    float a[50][50];
    /*
    printf("Ingrese la cantidad de filas y columnas: ");
    scanf("%i", &n);
    */
   
    LlenarMatriz(a,&n);
    ImpMatriz(a,n);
    GaussJordan(a,n);
   
    system("pause");
    return 0;
   
}




El codigo me tira una matriz de 0 por cada elemento en el archivo de texto desde el que leo la matriz.
¿alguna idea de que podria ser?



ejemplo de matriz en archivo.txt (el archivo se llamara "matriz.txt" :


+6 -2 +2 +4 +12
0 -4  +2 +2 +10
0  0  +2  -5    -9
0  0    0  -3    -3

Idmus

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *ar;
         
int TotalLineas(char b[20])
{
    ar = fopen(b, "r");
    int ch,num_lineas=0;
    while((ch=fgetc(ar)) != EOF)
      if (ch == '\n')
         num_lineas++;
       //  printf("LOLO   %i \n",num_lineas);
    fclose(ar);
    return (num_lineas+1);
}
   
       

void LlenarMatriz(float a[50][50], int n,char b[20])
{
     
     int i, j, k;
   
     ar = fopen(b,"r");
   
   
     k=n;
   
     for(i=0; i<k; i++)
     {
              for(j=0; j<k+1; j++)
              {
                       fscanf(ar, "%f", &a[i][j]);
                       
              }
     }
     fclose(ar);
}

void ImpMatriz(float a[50][50], int n)
{
     int i, j;
     
     for(i=0; i<n; i++)
     {
              for(j=0; j<n+1; j++)
              {
                       printf("%f \t", a[i][j]);
              }
              printf("\n");
     }
}

void GaussJordan(float a[50][50],int n)
{
     float piv, x, y;
     int i, j, k;
     
     for(i=0; i<n; i++)
     {
              for(j=0;j<n;j++)
              {
                       if(j != i)
                       {
                            x=a[i][j];
                            y=a[j][i];
                            for(k=0;k<n+1;k++)
                                a[j][k]=a[j][k]/y*x+a[i][k];
                       }
              }
     }
}

int main()
{
    int n;
    char b[20];
    float a[50][50];
      printf("Nombre del archivo: ");
     gets(b);
    n= TotalLineas(b);
 
   
    LlenarMatriz(a,n,b);
    ImpMatriz(a,n);
    GaussJordan(a,n);
   
    system("pause");
    return 0;
   
}





ya se puede leer la matriz para gauss , al parecer solo era un problema de punteros, ahora deberia poder aplicar aplicar gauss. ¿que deberia hacer para calcular gauss?