• Miércoles 15 de Mayo de 2024, 00:39

Autor Tema:  Re: Leer matrices desde un archivo  (Leído 10981 veces)

Lucia

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: Leer matrices desde un archivo
« en: Miércoles 6 de Noviembre de 2002, 16:46 »
0
Bueno tengo que hacer una practica y casi todo bien, menos al punto que llego que me dice q leo una matriz desde un archivo, no tengo muy claro a q se refiere con eso, q hay una serie de valores en el archivo, que leo dsde mi progrma y los asigno a una matriz ? esto es un ejercicio de programacion basica, asi que supongo que no pueden ser muchas florituras, muchas gracias

Quasar

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Leer matrices desde un archivo
« Respuesta #1 en: Miércoles 6 de Noviembre de 2002, 20:30 »
0
Lo que te piden es que leas un conjunto de datos numericos de un archivo. supongo que el formato será de texto y que tendrás tantos valores como dimensión tenga la matriz, así que crea con cualquier editor un archivo de texto con un conjunto de datos numéricos, y una vez hecho esto leelo desde tu programa numero por número y los vas metiendo en la matriz. tu único problema puede ser no saber la dimensión de la matriz, el resto supongo que te será fácil.
ánimo, que es fácil. si quieres código o algo, pídemelo.

Lucia

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: Leer matrices desde un archivo
« Respuesta #2 en: Jueves 7 de Noviembre de 2002, 20:22 »
0
gracias! la verdad es que esa era mi principal sospecha, la cosa es q le pregunte a mi profesor, como nunca esta en su oficina pues le mande un email y por lo general contesta pero no eta vez, y bueno sobre el tamaño de la martriz pone q hasta 50x50 asi q supongo lo q me salga a mi de la gana, es q la verdad me he impacientado y quiero quitarme esta practica del medio lo antes posible asi que decidi preguntar a la gente q entendia, pq a lo mejor hay una manera de en un archivo tener algo q reconozca como matriz en si C o yo me estoy montando paranoias de mas.

Gracias por lo del codigo pero de momento soy muy apañadita pa esas cosas pero si me surge alguna pega preguntare  y gracias de nuevo;)

Quasar

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Leer matrices desde un archivo
« Respuesta #3 en: Viernes 8 de Noviembre de 2002, 09:54 »
0
Puede que lo que busques sea esto, el tener una matriz de NxM y enviarla de golpe al fichero y leerla de golpe del fichero. Puedes hacerlo escribiendo y leyendo un bloque de bytes.
con fwrite(matriz, sizeof(matriz),1,pfichero);
y para leerla fread(matriz,sizeof(matriz),1,pfichero);
pero esto lo hará en modo binario, así que como no sé el tipo de archivo que tienes...

Lucia

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Re: Leer matrices desde un archivo
« Respuesta #4 en: Viernes 8 de Noviembre de 2002, 17:46 »
0
a mi me ha dicho, lees la matriz desde un archivo auxiliar no mas no menos

adocrates

  • Miembro activo
  • **
  • Mensajes: 54
    • Ver Perfil
Re: Leer matrices desde un archivo
« Respuesta #5 en: Viernes 8 de Noviembre de 2002, 21:14 »
0
El archivo con numeros separados, las columnas por ; (puntoycoma) y las lineas por enter :

99;23;45;67;2;etc...
65;34;87;23;83;5;etc...
etc...

Luego tienes la matriz de numeros de 50x50, un bufer, un puntero, un FILE y los indices :  
Código: Text
  1.     int matriz[50][50];
  2.     char buf[1024], *p;
  3.     FILE *fp;
  4.     int k=0,j=0;
  5.  
  6.  
Inicializamos y abrimos el archivo (fijate que usamos el [-1] como inicializador ):  
Código: Text
  1.     printf("Lectura de un archivo con numeros para manejo de matriz en Lenguaje C.n");
  2.     for(k=0;k<50;k++)
  3.         for(j=0;j<50;j++)
  4.             matriz[k][j]=-1;
  5.     k=j=0;
  6.     if((fp=fopen("matriz.txt","r"))==NULL)
  7.         return(printf("ERRROR NO existe archivo con numeros 'matriz.txt' !n"));
  8.  
Leemos un buffer y luego parseamos (detectar y cortar) con el separador ';' con p y la funcion strtok :
Código: Text
  1.     while(fgets(buf,1024,fp) != NULL)
  2.     {
  3.         p=strtok(buf,";");
  4.         while(p!=NULL)
  5.         {
  6.             matriz[k][j]=atoi(p);
  7.             j++;
  8.             p=strtok(NULL,";");
  9.         }
  10.         j=0;
  11.         k++;
  12.     }
  13.  
Finalmente imprimimos el resultado, recorriendo la matriz y preguntando por el MAXIMO (50) o el inicializador [-1] :
Código: Text
  1.     for(k=0;k<50 && matriz[k][0] > -1;k++)
  2.     {
  3.         for(j=0;j<50 && matriz[k][j] > -1 ;j++)
  4.         {
  5.             printf("[%4d] ",matriz[k][j]);
  6.         }
  7.         putchar('n');
  8.     }
  9.     fclose(fp);
  10.  
Y esta es la salida :
Código: Text
  1. Lectura de un archivo con numeros para manejo de matriz en Lenguaje C.
  2. [  99] [  23] [  45] [  67] [   2]
  3. [  65] [  34] [  87] [  23] [  83] [   5]
  4.  


Suerte y Avisa como te fue.:D
Solo C que nada C.

Lucia

  • Nuevo Miembro
  • *
  • Mensajes: 17
    • Ver Perfil
Leer matrices desde un archivo
« Respuesta #6 en: Viernes 8 de Noviembre de 2002, 23:53 »
0
gracias, en fins, yo te cuento, la pena es q no te podre decir nada ata enero, y a ver si me acuedo de esa ^^U