| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
erci
Registrado: 15 Nov 2007 Mensajes: 5
| Publicado: 23/11/2007 11:45 am | | | Título: con |
| Por ejemplo tengo estos datos en el archivo 4 4 // lo cual me indica el tamaño de una matriz 0100 // la matriz 0000 0001 0100
en base a este archivo quiero construir una matriz para despues utilizar los datos que quedan almacenados en la matriz.
#include <stdio.h>
//Variables Globales int mapa[100][100]; int filas; int columnas;
// Programa Central int main () {
FILE *fichero; fichero = fopen("origen.txt","a+"); fscanf (fichero, "%i %i %i", &filas, &columnas); printf (" %i", filas-1); system ("pause"); }
//Construir matriz
void construye_matriz() int t; int s; int mapa[filas][columnas]; { for(t=0;t<filas;t++) for (s=0;t<columnas;s++) mapa[t][s]; } _________________ Aprendiendo a programar en C
Ultima edición por erci el 03/12/2007 7:45 am; editado 1 vez |
| | Volver arriba | |  | rir3760

Registrado: 01 Oct 2004 Mensajes: 3837 Ubicación: Mexico
| Publicado: 24/11/2007 6:17 am | | | Título: |
| Para ayudarte con la lectura del archivo primero tienes que describirnos la estructura exacta de este.
Un error importante en el programa es utilizar variables para definir las dimensiones de un array:
| Código: | int filas; int columnas;
/* ... */
int mapa[filas][columnas]; |
Ya que en C (C90) no es posible utilizar variables para indicar las dimensiones del array (en C99 si seria posible pero el valor de estas al iniciar el programa seria cero).
Si la estructura del archivo de texto es:
1) Primera fila con solo dos valores (tipo int) indicando el numero de filas y columnas.
-Y-
2) Lineas subsiguientes con todos los valores (tipo int) de cada una de las filas.
Por ejemplo:
| Código: | 3 3 0 1 2 3 4 5 6 7 8 |
Una forma de leer en memoria esos datos es primero declarando un array con el maximo numero de filas y columnas; a continuacion se leerian el numero actual de filas y columnas seguido (mediante dos bucles for) de la lectura del valor cada una de estas.
Un ejemplo en C estandar es:
| Código: | #include <stdio.h> #include <stdlib.h>
#define NUM_MAX_FILAS 10 #define NUM_MAX_COLS 10
int main(void) { FILE *entrada; char *nom_archivo = "Datos.txt"; int datos[NUM_MAX_FILAS][NUM_MAX_COLS]; int num_filas; int num_cols; int i; int j; /* Apertura del archivo de entrada */ if ((entrada = fopen(nom_archivo, "rt")) == NULL) return EXIT_FAILURE; /* Lectura del numero de filas y columnas */ if (fscanf(entrada, "%d %d", &num_filas, &num_cols) != 2){ perror(nom_archivo); fclose(entrada); return EXIT_FAILURE; } /* Lectura de cada uno de los valores */ for (i = 0; i < num_filas; i++) for (j = 0; j < num_cols; j++) if (fscanf(entrada, "%d", &datos[i][j]) != 1){ fprintf(stderr, "%s\n", "Datos incorrectos!"); fclose(entrada); return EXIT_FAILURE; } fclose(entrada); /* Impresion de los datos en memoria */ for (i = 0; i < num_filas; i++){ for (j = 0; j < num_cols; j++) printf(" %d", datos[i][j]); putchar('\n'); } return EXIT_SUCCESS; } |
Un saludo _________________ The capacity to learn is a gift; The ability to learn is a skill; The willingness to learn is a choice. -- Rebec of Ginaz |
| | Volver arriba | |  | erci
Registrado: 15 Nov 2007 Mensajes: 5
| Publicado: 25/11/2007 1:06 pm | | | Título: .... |
| La enstructura exacta es: la primera linea, indica el tamaño de la matriz (nose si sirve de algo o solo es un distractor, ya que el tamaño maximo que puede tomar es de 100x100) las siguientes lineas indican las matriz la que solo tiene elementos 1 ò 0.
Lego tengo que ocupar los datos de la matriz para hacer comparaciones.
Se agardece la respuesta. _________________ Aprendiendo a programar en C |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |