(* PROGRAM eccetera eccetera [anche questo devo scrivere??? :-))] Naturalmente, non l'ho testato (non mi va di installare il compilatore!) *) const max = 5; (* massima dimensione *) empty_el = 9999; type (* dichiarazione della struttura CODA *) queue = RECORD elements: array[1..max] of integer; inQueue: 1..max; (* punta al primo elemento della coda *) END (* end record *) (*************** variabili del main ******************) var Q : queue; num, somma, elem, i : integer; (* Funzioni/Procedure di base: create(queue); full(queue) --> boolean; empty(queue) --> boolean; in(queue, integer); out(stack) --> integer; *) (* CREA CODA *****************************************) (* procedura di inizializzazione *) procedure create(Q: queue); begin Q.inQueue := 0; (* stato di coda vuota *) end; (* CODA PIENA *****************************************) function full(Q: queue): boolean; begin full := (Q.inQueue=max); end; (* STACK VUOTO *****************************************) function empty(Q: queue): boolean; begin empty := (Q.inQueue=0); end; (* INSERIMENTO NELLA CODA *****************************) (* restituisce TRUE se l'elemento è stato inserito *) function in(var Q: queue; x: integer): boolean; begin if not full(Q) then begin Q.inQueue := Q.inQueu+1; (* un elemento in più *) Q.elements[Q.inQueue] := x; in := true; end else in := false; end; (* USCITA DALLA CODA ******************************) function out(var Q: queue): integer; begin if not empty(Q) then begin out := Q.elements[1]; (* tutti gli elementi vengono "sciftati" a sinistra di 1 *) for i=2 to Q.inQueue do Q.elements[i-1] := Q.elements[i]; Q.inQueue := Q.inQueue-1; end else out := empty_el; end; (* FUNZIONE: somma degli elementi della coda; *) function sum(Q: queue): integer; var tot: integer; begin tot := 0; while not empty(Q) do tot := tot + out(Q); sum := tot; end; begin (* MAIN *) create(Q); (* ti carichi la tua brava coda: *) write('Quanti elementi inserire? '); readln(num); i:=1; while i<=num AND i<=max do begin write(' ', i, '^ elemento: '); readln(elem); in(Q, elem); i:=i+1; end somma := sum(Q); writeln('La tua brava coda [:-)] ha elementi la cui somma è ', somma); end. (* MAIN *)