Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Archivos y arreglos!

Estas en el tema de Archivos y arreglos! en el foro de C/C++ en Foros del Web. Hola!! Estoy haciendo un programa el cual tiene que leer de un archivo unos datos de tipo real, y dichos datos se tienen que guardar ...
  #1 (permalink)  
Antiguo 30/05/2010, 23:36
 
Fecha de Ingreso: mayo-2010
Mensajes: 2
Antigüedad: 14 años, 5 meses
Puntos: 0
Archivos y arreglos!

Hola!!

Estoy haciendo un programa el cual tiene que leer de un archivo unos datos de tipo real, y dichos datos se tienen que guardar en dos matrices A y B las matrices son de 3x3. La verdad soy nueva en esto, y no se como hacerlo.

Los datos del archivos son: el archivo se llama datos.txt

1 2
2 3
3 5.6
1.3 4.6
8.3 1
1 4
4 4
3 6
7.6 4

la primera columna representa a la primera matriz, y la segunda columna a la matrix B

Ya conseguí leer el archivo y conseguí guardar en un arreglo tipo char a todos los elementos, pero ahora no se como pasar esos datos a la matriz A y B porque son de tipo real y no se que hacer!

aqui esta el codigo:

#include <stdio.h>
#include <string.h>

int main()
{
FILE *fp1;
char datos[4];
int c;

fp1 = fopen("datos.txt", "r");

do
{
/* Obtiene una palabra del archivo */
c = fscanf(fp1, "%s", datos);
if (c != EOF)
printf("%s\n", datos); /* La despliega en pantalla */
}
while (c != EOF); /* Se repite hasta encontrar EOF */

fclose(fp1);

system("PAUSE");
return 0;
}

con los datos del arreglo "datos" tengo que llenar las matrices A y B

Me pueden ayudar por favor!
  #2 (permalink)  
Antiguo 31/05/2010, 15:01
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 6 meses
Puntos: 228
Respuesta: Archivos y arreglos!

Con este codigo almacenas los valores en las matrices A,B:

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main()
  5. {
  6. FILE *fp1;
  7. int i,j;
  8. float A[3][3],B[3[]3];
  9. int c;
  10.  
  11. fp1 = fopen("datos.txt", "r");   //Abrimo  el archivo
  12.  
  13. for(i=0;i<3;i++)                                   //Iteramos i,j para  ir almacenando los valores.
  14.     for(j=0;j<3;j++){
  15.         fscanf(fp1, "%f", &A[i,j]);            // Leemos un float y lo guardamos en A en la posicion i,j
  16.         fscanf(fp1, "%f", &B[i,j]);            // Leemos un float y lo guardamos en B en la posicion i,j
  17. }
  18. fclose(fp1);
  19.  
  20. system("PAUSE");
  21. return 0;
  22. }
  #3 (permalink)  
Antiguo 31/05/2010, 15:30
 
Fecha de Ingreso: mayo-2010
Mensajes: 2
Antigüedad: 14 años, 5 meses
Puntos: 0
De acuerdo Respuesta: Archivos y arreglos!

Cita:
Iniciado por sam90 Ver Mensaje
Con este codigo almacenas los valores en las matrices A,B:

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main()
  5. {
  6. FILE *fp1;
  7. int i,j;
  8. float A[3][3], B[3][3];
  9. int c;
  10.  
  11. fp1 = fopen("datos.txt", "r");   //Abrimo  el archivo
  12.  
  13. for(i=0;i<3;i++)                                   //Iteramos i,j para  ir almacenando los valores.
  14.     for(j=0;j<3;j++)
  15.     {        
  16.         fscanf(fp1, "%f", &A[i][j]);            // Leemos un float y lo guardamos en A en la posicion i,j
  17.         fscanf(fp1, "%f", &B[i][j]);            // Leemos un float y lo guardamos en B en la posicion i,j
  18.         printf("Matriz A: %.2f \n", A[i][j]);
  19.         printf("Matriz B: %.2f \n", B[i][j]);
  20.     }              
  21. fclose(fp1);
  22.  
  23. system("PAUSE");
  24. return 0;
  25. }
Hola!!!

Muchisisisimas gracias, sólo modifiqué un poco tu código para imprimir los datos!! y funciona a la perfección!!!

Muchas gracias por tu ayuda!!!
  #4 (permalink)  
Antiguo 15/11/2010, 15:26
 
Fecha de Ingreso: octubre-2008
Mensajes: 162
Antigüedad: 16 años
Puntos: 11
Respuesta: Archivos y arreglos!

Hola, estuve intentando probar tu codigo... y cada ves me sale un error en system("pause"); ... por que será? que estara mal en mi dev cpp?

gracias.
  #5 (permalink)  
Antiguo 15/11/2010, 15:50
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 6 meses
Puntos: 228
Respuesta: Archivos y arreglos!

Si lo estas corriendo en linux sucede que el comando pause no existe. Simplemente saca esa instruccion. Es mas yo ni la uso me quedo de haber copiado el codigo anterior para modificarlo como querian.
  #6 (permalink)  
Antiguo 18/11/2010, 13:22
 
Fecha de Ingreso: octubre-2008
Mensajes: 162
Antigüedad: 16 años
Puntos: 11
Respuesta: Archivos y arreglos!

gracias sam90.. puedo hacer otra pregunta?? ... guardar los datos leidos desde el txt en matrices no es lo mismo que gardar los datos leidos desde un txt en arreglos???

si fuese diferente, como se haría para guardarlos en arreglos? cambia mucho el codigo?

gracias, saludos.
  #7 (permalink)  
Antiguo 18/11/2010, 17:57
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 6 meses
Puntos: 228
Respuesta: Archivos y arreglos!

A ver... matrices, arreglos es todo lo mismo. Nada mas que a las matrices se las conocen como arreglos de dos dimensiones.
No estoy entendiendo a que apunta tu pregunta.

Si lo que quieres es guardar en un archivo pudes usar fprintf que es igual al printf.
  #8 (permalink)  
Antiguo 18/11/2010, 21:14
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Archivos y arreglos!

o puedes utilizar fwrite para guardar en un archivo
  #9 (permalink)  
Antiguo 18/11/2010, 21:32
 
Fecha de Ingreso: octubre-2008
Mensajes: 162
Antigüedad: 16 años
Puntos: 11
Respuesta: Archivos y arreglos!

gracias nuevamente, y perdon por la pregunta ners.. jeje saludos.
  #10 (permalink)  
Antiguo 22/11/2010, 14:21
 
Fecha de Ingreso: octubre-2008
Mensajes: 162
Antigüedad: 16 años
Puntos: 11
Exclamación Respuesta: Archivos y arreglos!

Hola escribo nuevamente por que me he encontrado con una sorpresa... resulta que quiero graficar desde 6000 puntos hacia arriba y estoy usando la herramienta SDL - chart ye me he encontrado con la sorpresa que solo me permite hasta 1000 puntos ya que es gratuito.... si no, debiera de comprarlo.... de que otra forma pudiese graficar lo que ya tengo hecho??...

ahora tengo asi:

Código C++:
Ver original
  1. RChart1->ClearGraf();
  2. RChart1->DataColor = clBlue;
  3. RChart1->MoveTo (0,0);
  4.  
  5.     for(i=0;i<31;i++)                                  
  6.     for(j=0;j<31;j++)
  7.     {
  8.         fscanf(fp1, "%f", &A[i][j]);          
  9.         fscanf(fp1, "%f", &B[i][j]);            
  10.         }
  11. fclose(fp1);
  12. RChart1->ShowGraf();

como debiera hacerlo ahora? eso si con una herramienta que me permita miles de puntos gratis o por defecto en el builder...

leia la posibilidad de hacero en un form2 abriendolo en ventana aparte al pinchar un boton... pero por mas que intente no me mostraba la traza....

agradezco toda la ayuda... saludos.
RChart1->DrawTo(A[i][j],B[i][j] );
  #11 (permalink)  
Antiguo 23/11/2010, 01:36
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 4 meses
Puntos: 73
Respuesta: Archivos y arreglos!

Hay una librería gráfica llamada DISLIN, que es gratuita para usos no comerciales. Existen versiones para varios lenguajes, compiladores y sistemas operativos. Puedes encontrarla en

http://www.mps.mpg.de/dislin/

Eso sí, está en inglés.
  #12 (permalink)  
Antiguo 23/11/2010, 11:44
 
Fecha de Ingreso: octubre-2008
Mensajes: 162
Antigüedad: 16 años
Puntos: 11
Exclamación Respuesta: Archivos y arreglos!

Hola, gracias por la página que me has dado, la he estado mirando y podría servirme, voy a probarla... lo unico es que es para c, entre otros, y yo uso c++... cambia un poquitito... gracias...

aprovecho de preguntar... el componente TPerformanceGraph de la seccion Samples viene por defecto o se instaló al yo instalar algo?... y como tendría que hacerlo para manipular este componente? ya que puedo mostrar la señal que quiero, pero es tan larga que aparece solo una parte visible y no logro mover la señal, ni hacerle zoom como si lo hago con el rchart del sdl....

otra consulta, no existe el modo de poder quitar esta restricción del componente? lee solo matrces de 31 por 31 al poner 32 se cae...

si esta última ha sido una pregunta que no deba ir aqui la quitaré... gracias.
  #13 (permalink)  
Antiguo 24/11/2010, 03:42
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 4 meses
Puntos: 73
Respuesta: Archivos y arreglos!

Si te vas directamente a Descargas, en la sección Distribuciones verás que hay para varias plataformas (Win32, Win64, Linux, etc). En el caso de Win32, hay versiones para compiladores tanto C como C++, además de FORTRAN y PYTHON. De hecho, las únicas que hay para C (no ++) son par el intérprete Ch y para el compilador Lcc-Win32.

En cuanto a lo otro, no lo sé.

Saludos,
  #14 (permalink)  
Antiguo 22/07/2015, 14:42
 
Fecha de Ingreso: julio-2015
Ubicación: México D.F.
Mensajes: 5
Antigüedad: 9 años, 3 meses
Puntos: 0
Pregunta Respuesta: Archivos y arreglos!

Hola! No pude dejar de revisar este tema ya que es muy parecido al problema que tengo.
Actualmente tengo el problema de leer un archivo de datos y guardarlo en vectores ó arreglos según sea más conveniente para despúes con ellos elaborar operaciones matemáticas.
Este es un ejemplo del tipo de datos que quiero leer.

{{1, 1, 3, 13312}, {1, 2, 7, 13393}, {1, 3, 5, 18999}}
{{2, 1, 8, 66962}, {2, 2, 6, 12901}, {2, 3, 8, 32862}}
{{3, 1, 7, 41614}, {3, 2, 5, 61455}, {3, 3, 7, 75502}}
{{4, 1, 7, 68611}, {4, 2, 7, 15513}, {4, 3, 3, 31933}}
{{5, 1, 3, 51015}, {5, 2, 8, 27722}, {5, 3, 3, 50555}}
{{6, 1, 2, 21665}, {6, 2, 2, 40999}, {6, 3, 6, 41725}}
{{7, 1, 5, 21500}, {7, 2, 1, 32539}, {7, 3, 2, 20462}}
{{8, 1, 2, 64630}, {8, 2, 6, 52658}, {8, 3, 5, 73321}}

Espero poder contar con su apoyo y claro también contribuir con ustedes.

Gracias!
  #15 (permalink)  
Antiguo 22/07/2015, 14:45
Avatar de xKuZz  
Fecha de Ingreso: febrero-2015
Ubicación: nullptr
Mensajes: 183
Antigüedad: 9 años, 8 meses
Puntos: 27
Respuesta: Archivos y arreglos!

No hay necesidad ninguna de reabrir un tema de hace casi 5 años para duplicar un tema que has puesto hace 10 minutos, en cuánto alguien vea tus temas y se disponga a ayudarte a resolverlos tendrás alguna respuesta. Además, va en contra de las normas del foro.

Etiquetas: arreglos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:57.