Autor
|
Tema: Enviar un archivo a una funcion "leer matriz" en c (Leído 10,807 veces)
|
Idmus
Desconectado
Mensajes: 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
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
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()" El escenario mas simple es aquel donde conoces el numero de filas y columnas. En ese caso solo debes pasar a la función el nombre del archivo y la dirección base del array. Dentro de la función abres el archivo, lo procesas y finalmente lo cierras. Mas o menos así: #include <stdio.h> #include <stdlib.h> #define NUM_FILAS 3 #define NUM_COLS 4 int leer_matriz(char const *nom_entrada, int mat[][NUM_COLS]); int main(void) { int mat[NUM_FILAS][NUM_COLS]; char const *nombre = "Entrada.txt"; /* ... */ leer_matriz(nombre, mat); /* ... */ return EXIT_SUCCESS; } int leer_matriz(char const *nom_entrada, int mat[][NUM_COLS]) { FILE *entrada; int rv; if ((entrada = fopen(nom_entrada , "rt")) == NULL ){ /* Manejo de error */ }else { /* Procesar el contenido del archivo */ } return rv; }
Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
Idmus
Desconectado
Mensajes: 6
|
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)
|
|
|
En línea
|
|
|
|
Idmus
Desconectado
Mensajes: 6
|
#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
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
Cuando publiques código fuente por favor utiliza las etiquetas de código. Estas se agregan mediante el cuadro desplegable con el texto "GeSHi" en la pagina de composición de mensajes, solo tienes que seleccionar ahí el lenguaje (C, C++, etc.). ---- En el programa no tiene caso pedir el numero de filas y columnas en la función main porque ese valor se ignora (lo primero que haces en la función "LlenarMatriz" es destruir ese valor sobrescribiendolo con otro). El error se encuentra en esa función (me refiero a "LlenarMatriz"), cuando lees el numero de filas con esta linea:
Falta utilizar el operador "dirección de" (el '&'), debería ser:
Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
Idmus
Desconectado
Mensajes: 6
|
#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++){ } } for(i=0;i<n;i++){ for(j=0;j<n;j++) } 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?
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
"""BUSCO EJEMPLO VB PARA ENVIAR MAILS""""
Programación Visual Basic
|
gera
|
1
|
6,635
|
1 Septiembre 2005, 00:14 am
por programatrix
|
|
|
Facebook reemplaza el "Email a un amigo" por el botón "Enviar"
Noticias
|
wolfbcn
|
0
|
4,847
|
27 Abril 2011, 14:00 pm
por wolfbcn
|
|
|
(Solucionado) ¿Como usar "Enviar a..." moviendo el archivo de origen?
Windows
|
Eleкtro
|
7
|
6,242
|
17 Noviembre 2012, 21:17 pm
por simorg
|
|
|
Enviar una matriz desde una funcion a la matriz del main
Programación C/C++
|
erest0r
|
3
|
4,067
|
22 Junio 2013, 09:05 am
por leosansan
|
|
|
[BATCH] Leer con FOR "caracteres especiales" de un archivo.
Scripting
|
Segadorfelix
|
2
|
3,447
|
20 Abril 2019, 22:42 pm
por Segadorfelix
|
|