Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Idmus

#1
#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?
#2
#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
#3
#include <stdio.h>
#include <stdlib.h>


FILE *Leer(){
FILE *superfacil;
superfacil=fopen("datos.txt", "r" );
return (superfacil);


int TotalLines(){
FILE *arch;
arch=fopen("datos.txt","r");
   int ch,num_lineas = 0;
   while ((ch = fgetc(arch)) != EOF)
      if (ch == '\n')
         num_lineas++;
    return(num_lineas+1);
}

int main() {
int a[10][10],b[10],n,i,j,k,l;
float t;

FILE *azucar;
azucar=Leer();
n=TotalLines();

for(i=0;i<n;i++){
for(j=0;j<n;j++){
fscanf(azucar,"%d",&a[i][j]);
}
fscanf(azucar,"%d",&b[i]);
}
for(i=0;i<n;i++){
for(j=0;j<n;j++)
printf("%d\t",a[i][j]);

printf("%d\n",b[i]);
}

system("pause");
return 0;

}






de esta forma puedo leer una matriz, sin embargo hallar el codigo de c para solucionarlo por gauss jordan me ha sido complicado, tira errores cuando intento loss que estan ya hecho o cuando intento modificar esos archivos para qu funcionen en mi codigo.... ¡que codigo me servivria para aplicar gauss gordan a la matriz que leo adentro del archivo?
#4
#include <stdio.h>
#include <stdlib.h>


void LlenarMatriz (float s[50][50], int *t)
{
     int i, j, c;
     char a[20];
     
     FILE *arch;
     gets(a);
     arch = fopen("matriz.txt","r");
     fscanf (arch, "%i", c);
      *t=c;
     
     while (!feof(arch))
     
   
     
     for (i=0; i<c; i++)
         for (j=0; j<c; j++)
             fscanf (arch, "%f", &s[j]);
     
     fclose (arch);
}

void EscribirMatriz (float s[50][50], int t)
{
     int i, j, c;
     t=c;
     
     for (i=0; i<c; i++)
         for (j=0; j<c; j++)
             printf ("%d", s[j]);
}


void GaussJordan (float s[50][50], int t)
{
     float piv, x, y;
     int i, ii, j, m;
         for (i=0; i<t; i++)
         {
             for (ii=0; ii<t; ii++)
             {
                 if (ii != i)
                 {
                        x = -s[ii];
                        y = s[ii];
                        for (j=0; j<t+1; j++)
                            s[ii][j] = -s[ii][j]/y*x+s[j];
                 }
             }
         }
}


int main()
{
    int n;
    float a[50][50];
   
    printf("Trabajo realizado por los Alumnos por miMIKASA EREN \n\n");
    printf("Ingrese el tamaño de la Matriz: \n");
    scanf ("%d", &n);
         
    LlenarMatriz(a,&n);
    EscribirMatriz(a,n);
    GaussJordan(a,n);
    EscribirMatriz(a,n);
   
    return 0;
}




el codigo compila , pero se cierra cuando ingreso el tamaño de la matriz, por ejemplo, colo que la matriz tendra un tamaño 3, pero se cierra la consola luego de eso... quisiera saber cual es el problema
#5
Muchas gracias, aunque el problema esta en que no puedo hacer uso de variables globales. ademas debe calcular la matriz (sist.de ecuaciones) por el metodo de gauss jordan)
#6
Hola, tengo una duda, el el caso de que quisiera leer una matriz dentro de un archivo ".txt" desde una funcion... ¿como seria posible? , es decir tengo mi funcion


"int main()"

y dentro de esta funcion llamo a una funcion que se llama "leer matriz()"

pero nose como enviar ese archivo "matriz.txt" con la matriz a la funcion para que me lo lea desde adentro de la funcion "leermatriz()"


agradeceria una ayuda de antemano muchas gracias


PD: lo que estaria adentro del archivo "matriz.txt"
seria algo asi:



1 3 4  7
2 4 8  8
5 8 10 9