All pastes #2093229 Raw Edit

rainbyte

public text v1 · immutable
#2093229 ·published 2011-11-09 01:54 UTC
rendered paste body
program turistico;
type
    pedido = RECORD
	apecli : string;
	nomcli : string;
	nomlug : string;
	numpers : integer;
	precio : real;
    END;
    
    pedidos = ^nodo_pedido;
    nodo_pedido = RECORD
	dato : pedido;
	sig : pedidos;
    END;
    
    hotel = RECORD
	nom : string;
	precio : real;
	capac : integer;
    END;
    
    hoteles = ^nodo_hotel;
    nodo_hotel = RECORD
	dato : hotel;
	sig : hoteles;
    END;
    
    lugar = RECORD
	nom : string;
	dist : integer;
	list : hoteles;
    END;

    lugares = ^nodo_lugar;
    nodo_lugar = RECORD
	dato : lugar;
	izq : lugares;
	der : lugares;
    END;

PROCEDURE cargar_lugares (VAR arb_lug : lugares); {No se implementa, se dispone}
PROCEDURE cargar_pedidos (VAR lis_ped : pedidos); {No se implementa, se dispone}
PROCEDURE buscar_hotel (VAR lis_hot : hoteles; ped : pedido);
BEGIN
    WHILE (lis_hot <> NIL) AND (ped.numpers > lis_hot^.dato.capac OR ped.precio > lis_hot^.dato.precio ) DO
    	lis_hot := lis_hot^.sig
END;

PROCEDURE buscar_lugar (VAR arb_lug : lugares; nomlug : string);
BEGIN
    WHILE (arb_lug <> NIL) AND (arb_lug^.dato.nom <> nomlug) DO
    BEGIN
	IF (nomlug < arb_lug^.dato.nom) THEN
	    arb_lug := arb_lug^.izq
	ELSE
	    arb_lug := arb_lug^.der
    END;
END;

PROCEDURE proc_pedidos (VAR arb_lug : lugares; lis_ped : pedidos)
VAR
    aux_lug : lugares;
    aux_hot : hoteles;
BEGIN
    aux_lug := arb_lug;
    WHILE (lis_ped <> NIL) DO
	buscar_lugar(aux_lug, lis_ped^.dato.nomlug);
	IF (aux_lug <> NIL) THEN
	    aux_hot := aux_lug^.list;
	    buscar_hotel(aux_hot, lis_ped^.dato);
	    IF (aux_hot <> NIL) THEN		
		aux_hot^.dato.capac := aux_hot^.dato.capac - lis_ped^.dato.numpers;
		WRITE ('Hotel asiganado:', aux_hot^.dato.nom);
	    ELSE
		WRITE ('No se puede satisfacer el pedido');
	ELSE
	    WRITE ('No se puede satisfacer el pedido');
	lis_ped := lis_ped^.sig;
    BEGIN
	
    END;
END;


VAR
    arb_lugares : lugares;
    lis_pedidos : pedidos;
    
BEGIN
    arb_lugares := NIL;
    lis_pedidos := NIL;
    cargar_lugares (arb_lugares);
    cargar_pedidos (lis_pedidos);
    proc_pedidos (arb_lugares, lis_pedidos);
END.