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

Leer un archivo y pasarlo a arreglo

Estas en el tema de Leer un archivo y pasarlo a arreglo en el foro de C/C++ en Foros del Web. Hola, me pueden ayudar con una tarea?? necesito hacer un programa en Dev C++ (estoy recién partiendo con los estudios) que lea un archivo con ...
  #1 (permalink)  
Antiguo 28/09/2006, 11:15
 
Fecha de Ingreso: septiembre-2006
Mensajes: 3
Antigüedad: 18 años, 2 meses
Puntos: 0
Pregunta Leer un archivo y pasarlo a arreglo

Hola, me pueden ayudar con una tarea?? necesito hacer un programa en Dev C++ (estoy recién partiendo con los estudios) que lea un archivo con estos datos de un alumno:
Número de matrícula
fecha de nacimiento
dirección
nombre
cedula de identidad.

Y luego de leerlos los vaya almacenando en arreglos, yo entiendo que los arreglos almacenan solo un tipo de dato, por lo tanto tienen que ser varios... pero cómo hago para que al ir leyendo el archivo línea por línea me vaya direccionando los datos a los diferentes arreglos???

Ayúdenme porfa!!!

Gracias
Sole
  #2 (permalink)  
Antiguo 28/09/2006, 11:22
 
Fecha de Ingreso: octubre-2004
Mensajes: 107
Antigüedad: 20 años, 1 mes
Puntos: 0
hola!

bueno creo que tendrias que usar un struct que te deja meter varios tipos de variables en 1 sola.. vendria a ser como un registro de pascal.

struct talumno
{ int registro;
char nota;
};

typedef struct talumno tipo_alumno;

ahi hay un ejemplo... con el typedef defines un tipo entonces luego utilizas el tipo tipo_alumno y ya.

ahroa supongamos que tenes la variable X de tipo tipo_alumno, entonces para ver el registro del alumno tienes que hacer X.registro y asi para todos los campos.

tenes que tener en cuenta tambien como estan los datos en el archivo que tenes que leer y demas.

salu2!
  #3 (permalink)  
Antiguo 28/09/2006, 12:11
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 7 meses
Puntos: 2
No pues,...
intetalo, muestranos un poco de codigo, y te guiaremos.


que te pareceria si yo te contestara:

hay diferentes opcines para manejar una matriz generica, ya sea usando puteros a void o usando una Union de los tipos que usaras.

sin embargo tu problema podria resolverse con el uso de estructuras.
o en su caso un array de estructuras.
para leer tus datos bien podrias usar ficheros de texto o binarios.

si el numero de registros a leer son mas de uno lo ideal es hacerlo dentro de un bucle for.

una decicion que deberias de tomar es usar la libreria de C o las de C++.
esto dependeria de las exigencias de tu profesor.

basicamente es eso.

Saludos.
  #4 (permalink)  
Antiguo 28/09/2006, 12:37
 
Fecha de Ingreso: septiembre-2006
Mensajes: 3
Antigüedad: 18 años, 2 meses
Puntos: 0
Lo que tengo es esto... pero como te dije estoy recién partiendo así es que, lo estoy haciendo a lo tarzan...

#include<stdio.h>
#include<iostream>
#include<stdlib.h>

main ()
{ file *pt;
char nombre [30]
char direccion [45]
unsinged long n_matricula
unsigned long rut
unsigned long f_nacimiento
}

Pt= fopen("archivo.txt", "r");
if (!Pt)
{ printf("el archivo no existe")
systen ("pause");

int cont = 1;

while (!feof(pt))
{ fgets (%s,30,nombre, [cont]);
fgets (%s,45,direccion, [cont]);
fgets (%s,20,direccion, [cont]);
fgets (%s,15,rut, [cont]);
fgets (%s,10,f_nacimiento, [cont]);

fclose (pt);
system ("pause");
return 0
}
  #5 (permalink)  
Antiguo 28/09/2006, 14:20
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 7 meses
Puntos: 17
Cita:
Iniciado por sol_angel Ver Mensaje
Lo que tengo es esto... pero como te dije estoy recién partiendo así es que, lo estoy haciendo a lo tarzan...
Se nota, se nota...

Código:
MAL #include<stdio.h>
MAL #include<iostream>
MAL #include<stdlib.h>

MAL main ()
MAL { file *pt;
MAL char nombre [30]
MAL char direccion [45]
MAL unsinged long n_matricula
MAL unsigned long rut
MAL unsigned long f_nacimiento
MAL }

Pt= fopen("archivo.txt", "r");
if (!Pt)
MAL { printf("el archivo no existe")
MAL systen ("pause");

int cont = 1;

while (!feof(pt))
MAL { fgets (%s,30,nombre, [cont]);
MAL fgets (%s,45,direccion, [cont]);
MAL fgets (%s,20,direccion, [cont]);
MAL fgets (%s,15,rut, [cont]);
MAL fgets (%s,10,f_nacimiento, [cont]);

fclose (pt);
system ("pause");
MAL return 0
}
Un 85% de líneas incorrectas.

¿Quieres hacernos creer que eso lo has estado programando?
  #6 (permalink)  
Antiguo 28/09/2006, 15:21
 
Fecha de Ingreso: febrero-2005
Mensajes: 39
Antigüedad: 19 años, 9 meses
Puntos: 1
jajaja, que duro eres con el chico...
  #7 (permalink)  
Antiguo 28/09/2006, 15:40
 
Fecha de Ingreso: septiembre-2006
Mensajes: 3
Antigüedad: 18 años, 2 meses
Puntos: 0
Nop, no intento hacer creer que lo estoy programando, porque NO SE PROGRAMAR, por eso estoy estudiando y en mi primer año, de echo, partí recién este segundo semestre con el ramo de C++, por algo estoy pidiendo ayuda... y no soy chico, soy una mujer.

Lo que hice fue intentar hacer algo en papel viendo lo que he pasado en clases...

Gracias a los que quieran AYUDAR!! que es lo que pedí en un principio
  #8 (permalink)  
Antiguo 28/09/2006, 16:22
 
Fecha de Ingreso: febrero-2005
Mensajes: 39
Antigüedad: 19 años, 9 meses
Puntos: 1
Perdon por llamarte chico, no lo sabia y ahora le iba a echar yo un ojo a ver si te puedo ayudar en algo...

Un saludo!
  #9 (permalink)  
Antiguo 29/09/2006, 00:03
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 7 meses
Puntos: 2
Segun lo comentas, es aceptable que tengas tus errorsillos.

sabes me gustría creer, que ese codigo lo escribes tú.

Beno, te explico, un poco:
(Lo mas recomendable es que leas un libro de C).

segun veo estas usando C y no C++.

lo ideal en estos casos, es no mesclar las funciones de entrada y salida de C con los objetos de C.

en tu caso intentas incluir tanto stdio.h como iostream.
en tu codigo no haces referencia a nada en iostream.

si menciono que intentas, es por que no lo haces bien,

tu haces:

#include<stdio.h>

lo correcto es:

#include <stdio.h> //dejando un espacio entre #include y <stdio.h>

asi para todas las inclusiones.

la declaracion de main, tal vez tu compilador lo hacepte, asi , pero de no hacerlo, tendrias que declarala como int.

int main().

algo a tener en cuenta en C, es la diferencia entre mayusculas y minusculas.

cuando declaras la variable pt, lo haces como file* y lo correcto es FILE*.

y la variable pt tienes que usarla en minuscula en todo el codigo, y en tucaso cometes errores al usarla capitalizada. Pt.

cuando la funcion fopen falle tienes que hacer algo mas que pausar la ejecucion con un mensaje.

podrias intentar un nuevo fichero o salir de la aplicacion para poderla ejecutar una vez mas.

cuando uses bucles do, while o for con muchas sentencias tienes que definir un bloque de alcance.

while()
{
//sentencias a repetir.
}

la funcion fgets, es unicamente para leer cadena y no usa indicadores de formato, para leer con formato esta la funcion fscanf y para escribir fprintf,

por ultimo mencionar que toda centencia en C, termina son ; (punto y coma).

saludos.
  #10 (permalink)  
Antiguo 29/09/2006, 06:44
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 7 meses
Puntos: 17
Cita:
Iniciado por Nivel7 Ver Mensaje
tu haces:

#include<stdio.h>

lo correcto es:

#include <stdio.h> //dejando un espacio entre #include y <stdio.h>

asi para todas las inclusiones.
Hum eso no se si es del todo correcto.

Yo me refería a que si estaba usando C++ (dado que incluía iostream), debe ser <cstdio>, no <stdio.h>.

Por otra parte, está usando C++, si no iostream no funcionaría.
  #11 (permalink)  
Antiguo 29/09/2006, 09:07
 
Fecha de Ingreso: febrero-2005
Mensajes: 39
Antigüedad: 19 años, 9 meses
Puntos: 1
El tema del espacio en el #include es question de estetica y gustos, pero no dejarlo no es incorrecto.

Por cierto te tenia algo preparado pero no me va bien internet a ver si despues puede conectarme y te lo posteo...
  #12 (permalink)  
Antiguo 29/09/2006, 18:24
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 7 meses
Puntos: 2
claro, el Dev Cpp, crea un proyecto para C++, por defecto, es por eso que acepta el iostream, sin embargo en niguna parte del codigo usa un objeto de iostream.

esta usando solo stdio, entonces su programa bien podia compilar como C.
(Si estubiera correcto claro).

si fuera a utilizar tanto iostream como stdio(cstdio), tendria que sincronizarlas, para que usen el mismo buffer.

si sol angel, mencionara si lo quiere unicamente en C o en C++, se reduciría a usar stdio.h o iostream.



Saludos.
  #13 (permalink)  
Antiguo 29/09/2006, 19:28
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años, 7 meses
Puntos: 47
Cita:
Iniciado por Nivel7 Ver Mensaje

tu haces:

#include<stdio.h>

lo correcto es:

#include <stdio.h> //dejando un espacio entre #include y <stdio.h>

asi para todas las inclusiones.

.
cUAL ES LA Grandiosa diferencia????????????????
  #14 (permalink)  
Antiguo 30/09/2006, 00:28
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 7 meses
Puntos: 2
OK ok, me equivoque, me influencie un poco por las anotaciones de MaxExtreme, cuando el en realidad se refería a el estilo de inclucion C++( <csdtio>).

la verdad nunca antes me he preguntado si es o no, lo mismo, siempre lo he hecho como aparece en todos los libros y manuales, con un espacio. ahora que lo mencionan, creo que ya se algo mas de C o C++.

en fin. Saludos.
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 13:52.