urgentetex!! leer archivos .dat

sandrups
06 de Junio del 2005
Estimados amigos, me han dado un trabajo de pseudo código donde me piden leer 2 archivos .dat ya existentes, y luego desplegar el resultado por pantalla.
En realidad estoy bastante perdido, a ver si me pueden orientar como lo debería realizar... acá les dejo el problema como me lo plantearon para que le hechen un vistazo.

El Ejercicio
Un Departamento comercial dispone de dos archivos en donde se regogen todas las ventas que se han realizado (VENTAS.DAT) y la relación de artículos que se disponen (ARTICULOS.DAT), con la siguiente estructura:

VENTAS.DAT

struct veta
{
struct
{
unsigned char día, mes;
unsigned int anyo;
} fecha;
unsigned int codart;
unsigned long int importe;
};

Donde fecha es la fecha en que se ha hecho una venta determinada, codart es el código de árticulo que se ha vendido y importe es el total en pesos que se ha obtenido por la venta.


ARTICULOS.DAT

struct articulo
{
unsigned int codart;
char nomart[31];
};

Donde codart es el código de un articulo y nomart su nombre.

Partiendo de la existencia de estos dos arhivos se pide implementar un programa en seudo código con las siguientes opciones:

a) INFORME DE VENTAS POR DÍA:
Se listarapor pantalla el total de ventas que se ha hecho diariamente y ordenado por la fecha. Por ejemplos supongamos que tenemos en el archivo VENTAS.DAT los siguientes datos.

fecha codart importe
01/05/2005 005 25000
03/05/2005 006 10000
01/05/2005 006 15000
02/05/2005 004 10000

El listado por pantalla sería:

LISTADO DE VENTAS. Pantalla n° 1

Fecha importe

01/05/2005 40.000
02/05/2005 10.000
03/05/2005 10.000

Para hacer esta opción se usará una lista enlazada en la que iremos insertando los nodos de forma ordenada con respecto a las fechas. Para comparar dos fechas se construirá una función de comparación.

b) LISTADO DE LOS CINCO ARTÍCULOS MÁS VENDIDOS
Se mostrará por pantalla los cinco artículos (código, nombre e importe acumulado) cuya suma de importes sea mayor (del importe mayor al menor), para ello se usará un vector dinámico cuyo tamaño vendrá determinado por el número de artículos del archivo ARTICULOS.DAT, en que se almacena el código del artículo y el importe acumulado. No hay que ordenar el vector puesto que no es necesario para obtener los cinco artículos.


Bueno eso sería el ejercicio, a ver si alguien me pegan una ayudadita. plis

ricasahe
06 de Junio del 2005
Mi estimado amigo: Aunque no especificas bien tu problema sino que detallas el trabajo que debes realizar, me imagino que será el de no poder abrir esos archivos con exstensión .dat o no puedes crearlos. Pues estos archivos .dat no se pueden abrir si es que no conoces el programa que los elaboró y no se pueden crear sino cuentas con un codificador. Asi mismo, si es que los pudieses abir o crear conociendo dicho programa, serán en un NTEF (Neutral Transport Encapsulating Format). Dicho formato codificado solo podría ser decodificado (valga la redundancia) por un receptor o emisor de correo Microsoft Outlook. Cualquier otro receptor de correo incluyendo el Outlook Express (mucho mas potente (puede codificar un mensaje mas no decodificar (menos en NTEF))), no podrá abrirlo. Deberán recurrir al remitente o al dador de dichos archivos para que los redacte o remita en formato llano (SMTP o HTML). Creo haber contribuído en algo (y algo enredado también) y, si, te advierto, que los archivos .dat (los que se reciben) son muchas veces inservibles, basura o contienen virus. Deben tener en su PC un buen software antivirus. Me pareció prudente hacerlo ya que al inicio de tu larga explicación refieres al, ".....me han dado a leer 2 archivos .dat ......." y también refieres "....un trabajo de pseudo código......" . Suerte.

Kaworu
06 de Junio del 2005
La extensión del archivo da igual, tu tienes dos archivos que contienen N registros con ua estructura determinada, te has de coger un objeto CFile, abrir uno de esos archivos y hacer lecturas del tamaño de la estructura sobre un puntero del mismo tipo ke la estructura o void y luego hacer un typecast.

Hasta luego