Buenas,
el final dice lo siguiente:
Cita:La Subdirección General de Operaciones Aduaneras requiere de un proceso para el manejo de las Cargas y Descargas de Containers hacia o desde los buques, por medio de grúas, donde cada grúa atiende a un solo buque. Para llevar a cabo el proceso de un día se cuenta con los siguientes archivos:
a) BUQUES: desordenado, máximo 200 registros, en donde cada registro representa un buque.
a.1) Id. del buque (word) a.2) Nombre del buque (30 car.) a.3) Dársena (5 car.)
a.4) Nro. de grúa (1..200) a.5) Cant. de containers (byte) a.6) Fecha Salida o Llegada (aaaammdd)
a.7) Constante de flotación (byte) a.8) Lugar de Origen o Destino (25 car.)
Si la fecha indicada en a.6 es mayor o igual que la fecha del sistema (Ej. 20040930 > 20040922), se trata de una salida y el buque va a hacer una carga. De lo contrario, se trata de una llegada y se hará una descarga.
b) CONTAINERS: ordenado por Id. de buque, conteniendo:
b.1) Id. del container (5 car.) b.2) Peso en Kgrs. (word)
b.3) Longitud en metros (byte) b.4) Id. del buque.
c) TARIFAS: con un único registro, el cual contiene 3 campos que representan c/u un valor de tipo single y que indica el valor por cada kg. que la grúa cobra, según la siguiente escala: hasta 20.000 kg al valor del primer campo, los siguientes kgs. hasta 40.000 kgs. al valor del segundo campo y los restantes kgr. al valor del tercer campo.
Se pide:
1. Obtener por única vez la fecha del sistema utilizando el procedimiento GetDate(aa,mm,dd,ds) donde los parámetros son de tipo word.
2. Desarrolle y utilice una función Carga_Descarga que reciba como parámetros dos fechas, y retorne un carácter ‘C’ si la primer fecha es mayor o igual que la segunda y, de lo contrario, devuelva un carácter ‘D’.
3. Para la Carga o Descarga de Containers de los buques debe controlar, por cada uno, que el buque mantenga su estabilidad. Para ello aplique la función
Estable(PesoContainer:longint; LongitudContainer:byte; CteFlot:byte; CargaoDescarga:char): boolean;
donde CargaoDescarga debe ser un carácter ‘C’ o ‘D’. Si la función retorna un valor true el container puede ser cargado o descargado; de lo contario (false ) el container debe esperar otro momento.
4. Imprima el siguiente listado, ordenado por Nro. de grúa y PesoKg de cada container, con el siguiente diseño:
LISTADO DE CARGAS Y DESCARGAS DE CONTAINERS AL dd-mm-aaaa
Nro. grúa: 999 Id.buque: 9999 CARGA o DESCARGA
Fecha: dd-mm-aaaa DE SALIDA o DE LLEGADA Cant. containers: 999
Id. container Peso Kg. Long. Mt. Importe
XXXXX 99999 99 $ 99999,99
. . . .
** Total de la grúa.........: 99999 Toneladas.
** Total de la grúa................................................: $ 999999,99
* Total general........….............: 9999999 Toneladas.
* Total general....................................................................: $ 9999999,99
* Total general containers..…....: 99999
Recursos, restricciones:
Mem. estática p/arreglos opcional: 812 bytes. Mem. en disco: 0 byte. Se permite un solo acceso a c/registro para c/archivo. Mem. dinámica: FileSize(Buques) x 17 bytes + FileSize(Containers) x 13 bytes.
Realizar: dibujo de las estructuras de datos adecuadamente rotuladas con identificadores que representen su significado, cálculo del espacio que ocupan en memoria; estrategia; algoritmo. No usar variables globales en los módulos.
Me trabo en el tema que a mi parecer es el mas delicado, que son las
estructuras de datos. Siento que tengo que usar toda la memoria o la maxima posible, y no se como relacionarlas entre si de acuerdo a cumplir lo que pide el punto 4.
- Off-topic:
- Pense en mover los dos primeros archivos a dos listas distintas, y el tercero a un vector de tres campos, quedando 800bytes de estatica para un vector de punteros. Pero me confunde pensar que tipo de punteros usaria, si cumplo con lo que pide el ejercicio 4 en cuanto al orden...
Tampoco entiendo de donde saco el importe.
Capaz el final este mal explicado y lo hayan corregido/aclarado en plena instancia, pero quiero ver si le encuentro alguna vuelta a este.