urgentetex!! leer archivos .dat
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
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
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.
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
Hasta luego
