• Domingo 22 de Diciembre de 2024, 22:09

Autor Tema:  Helpme!!!!! Con Archivos  (Leído 1492 veces)

caralarga

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Helpme!!!!! Con Archivos
« en: Viernes 4 de Junio de 2004, 15:28 »
0
Hola a todos, desede ya les digo que soy bastante newbie en programación. Entonces quería pedirles que me tiren una mano, o que me orienten un poco nomás con lo sig.

Tengo que usar c/c++

El problema es este

**********************************************

Leer el archivo datosproy2.txt, que contiene informacion sobre personas.
Los primeros 20 caracteres corresponde al nombre, los siguientes 8,
es decir la posicion 21 a la 28, representean su numero de documento,
y los restantes 10, de la posicion 29 a la 38, su fecha de nacimiento.

Ud. debera ordenar la informacion de las personas bajo los 3 campos, es decir,
ordenadas por nombre, fecha de nacimiento y numero de documento.
Debera poder emitir un listado en archivo de tipo texto, de las personas ordenadas por
cualquiera de los 3 criterios a solicitud de la respectiva opcion de menu, con el nombre "pernom.txt", "perdoc.txt" y "pernac.txt", respectivamente para cada criterio.
Ademas debera poder hacer una busqueda de alguna de ellas por cualquiera de los
3 criterios a partir de un dato a buscar que se lea desde teclado, y mostrar por pantalla
todos su datos de la persona si es hallada o informar su inexistencia si fracasa la busqueda.

Podra utilizar la estructura de datos que crea mas conveniente para el soporte de
la informacion (arreglo, lista, arbol) y cualquier algoritmo de ordenamiento.
Tenga en cuenta que un algoritmo de orden O(n2) tendra menor nota que uno de tipo O(nlogn).


Ademas se debera codificar un solo algoritmo de ordenamiento y uno de solo de busqueda, ambos que utilicen 3 funciones comparadoras segun sea el criterio por el cual
se hace el ordenamiento / busqueda, y no 3 versiones distintas de ordenamiento
y de busqueda, segun sea el tipo de dato.

***********************************************

Bueno, mi problema principar es tomar los datos desde el archivo y guardarlos. Quisiera saber como tomr "los primeros 20 caracteres y guardarlos en un campo, los segundos 8 en otro y así". Ya que por ejemplo Cuando cargo "Juan Manuel" Juan me lo pone en un campo y Manuel en otro. Se que tengo que hacerlo por bloques.

Bueno, lo otro es solo guia. Como lo hago ¿pilas, listas simples, listas dobles, arreglos? arboles no gracias, no tengo ni idea de como trabajar con estos. Se que tiene pocos datos como para hacerlo con una estructura de datos dinámica, pero supongamos que vamos a ampliar la lista.  la otra el ordenamiento ¿busrbuja, insercion, seleccion, quicksort? Busqueda ¿lineal,binaria? se que sería mas facil con un arrar, busrbuja y busqueda lieal. Pero quiero hacerlo bine, quisiera usar algun algoritmo de orden O(nlogn) o O(logn).

Les manos lod datos como están en el archivo, para que se den una idea de como estan ordenados.

ACOSTA ANGEL        2321269925/11/1970
ALARCON MONICA      5092530 15/02/1966
ALBA MIRIAM         5618161 02/08/1980
ALCAZAR RAUL        6518480 16/12/1975
ALVAREZ CESAR       6598752 31/01/1956
AMAYA JULIO         7709019 25/07/1988
ANDRADE NESTOR G    7960371 20/02/1960
ARGUELLO CRISTIAN   1077169820/02/1962
ARGUELLO MARCELO    1080583008/08/1960
ATAIDE JORGE        1152745016/12/1954
BAEZA EUGENIO       1155754919/08/1975
BAEZA FEDERICO      1234068508/08/1988
BELTRITTI JORGE     1292365307/04/1988
BERGES ZULEMA       1337367723/09/2001
BIASUTTI MARTIN     1372236515/05/1891
BIONDINI SERGIO     1483770924/01/1950
BIROLO DAVID        1529506306/08/1975
BIZZOCCHI MARIO     1732633512/10/1492
BONARDI BERNARDO    2007851830/03/1969
BOVO FABIAN         2038153928/02/1978
BRAVO CLAUDIO       2043973302/03/1950
BREGA JUAN          2078368519/06/1967
BRINGAS CARLOS      2139812711/10/1992
BRUNO EZEQUIEL      2148209807/03/2002
BUSSO ERICA P       2175509006/11/1943
CABRAL JOSE         2216310512/10/1966
CAMPOS ANIBAL       2256435206/11/1988
CANAPINO RUBEN      2277422115/02/1966
CARLOS ELIAS        2296834913/12/1945
CATIVA MARISA F     2346117425/12/1930
CENTENO VICTOR      2373641914/07/1962
CERIANI ALEJANDRO   2415097024/01/1950
COMPOLO MARCELA     2524799930/03/1975
CONREF FERNANDEZ NOR2527054315/06/1962
COOPER EDUARDO      2563344925/10/1980
COSENZA OMAR        8295489 01/11/1993
DIAZ MANUEL         1301572819/05/1995
DIAZ ROQUE          1314166717/07/1961
EROLES MARIANO      2308938212/02/1990
FACARO FABIAN       2681745214/05/1974
FERRERO LAURA       5218869 19/01/1996
FERREYRA JUAN       5880319 04/07/1982
FIGUEROA LUIS       1102679031/07/1953
FRAYLE MIGUEL E     1240596609/09/1949
FRENCIA CRISTIAN    1301557122/02/1970
GARCIA MARIA        2057567912/09/1984
GARZON JUAN MANUEL  2102331113/02/1981
GIACOMELLI DANTE    2153527030/08/1957
GLESSIC FRANCISCO A 2551218606/05/1982
GONZALEZ RAFAEL     6854315223/04/1970
IRAZOQUI SEBASTIAN  7010455016/01/1968
ISSIDORO ALEJANDRO  7072194414/11/1964


Los datos están bien, así que no se fijen si hay un documento 70.000.000 o algo así.

Bueno, desde ya muchas gracias, ojalá me puedan ayudar ya que es un proyecto que tengo que entregar y no tengo mucha idea.

cualquier cosa mi mail es theblackhawkmb@hotmail.com

Gracias

Matías

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Helpme!!!!! Con Archivos
« Respuesta #1 en: Viernes 4 de Junio de 2004, 16:29 »
0
Hola!!!!

Vos sabes de antemano el tamaño maximo de cada linea del archivo por lo q hacete un
Código: Text
  1.  
  2. char* linea = new char(TAMANIO_MAXIMO_LINEA);
  3.  
  4.  

Luego haces un
Código: Text
  1.  
  2. FILE* pArchivo;
  3. fgets(linea, TAMANIO, pArchivo); //fgets() devuelve cargado "linea" y a parte
  4.                                                 //devuelve NULL (la funcion fgets devuelve un char*) si hubo error. fgets() carga hasta un fin de linea del archivo
  5.  
  6.  
Luego lo q te queda es parser linea y listo!!!!!

Lo q si tene en cuenta es q faltan un millon de cosas como el
Código: Text
  1.  
  2. while (!feof(pArchivo))
  3. {
  4. blablabla();
  5. }
  6.  
  7.  

Salu2!!!!!

QliX=D!

  • Miembro MUY activo
  • ***
  • Mensajes: 214
    • Ver Perfil
Re: Helpme!!!!! Con Archivos
« Respuesta #2 en: Viernes 4 de Junio de 2004, 23:33 »
0
PAra cortar por espacios los campos podes usar strtok
QliX=D! - From the top of Tsunami

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Helpme!!!!! Con Archivos
« Respuesta #3 en: Viernes 4 de Junio de 2004, 23:48 »
0
Hola!!!!!

QliX=D! la verdad es q me acabo de enterar de q existe eso y ya lo guardo para cuando lo necesito!!!!!

Salu2!!!!

QliX=D!

  • Miembro MUY activo
  • ***
  • Mensajes: 214
    • Ver Perfil
Re: Helpme!!!!! Con Archivos
« Respuesta #4 en: Viernes 4 de Junio de 2004, 23:51 »
0
Todos los dias se aprende algo nuevo :D
QliX=D! - From the top of Tsunami