Ragazzi devo fare un esercizio in cui creo una funzione che restituisce l'elenco delle quantità di alcuni prodotti di un certo genere in ordine, crescente, di prezzo... Io l'ho fatto così ma mi da errore nella compilazione...
codice:
function ordina(l:puntatore):puntatore;//ordina una lista secondo il prezzo     //funzione che data una lista ne restituisce un altra costituita dagli stessi articoli ordinati per prezzo 
var pos,pos_1:puntatore; 
    bool:boolean; 

procedure scambia(r,s:puntatore); 
var z:puntatore; 
begin 
new(z); 
z^.marca:=r^.marca; 
z^.quantita:=r^.quantita; 
z^.prezzo:=r^.prezzo; 
r^.marca:=s^.marca; 
r^.quantita:=s^.quantita; 
r^.prezzo:=s^.prezzo; 
s^.marca:=z^.marca; 
s^.quantita:=z^.quantita; 
s^.prezzo:=z^.prezzo; 
dispose(z); 
end; 

begin 
if (l=nil) then 
             begin 
               writeln('non ci sono elementi del genere inserito'); 
               ordina:=NIL; 
             end 
else 
  begin 
    REPEAT 
      bool:=FALSE; 
      pos:=l; 
      pos_1:=l^.next; 
      while(pos_1<>NIL) do 
        begin 
          if(pos^.prezzo>pos_1^.prezzo) then 
                                         begin 
                                           scambia(pos,pos_1); 
                                           bool:=TRUE; 
                                         end; 
          pos:=pos_1; 
          pos_1:=pos_1^.next; 
        end; 
    UNTIL(bool=FALSE); 
    ordina:=l; 
  end; 
end; 


function elenco_prez:puntatore; 
var aus,p:puntatore; 
begin 
  aus:=nil;                    // questa è la lista ke restituirà la funzione 
    while (p <> nil) do          // entro nella lista generale 
     begin                             // se il genere è uguale 
       if p^.genere=gen then 
        ordina(p);   // faccio partire la funzione di 
       p:=p^.next;                               // inserimento ordinato 
     end; 
 elenco_prez:=aus; 
end;
E poi nel main

codice:
writeln ('Inserisci Genere del prodotto'); 
              readln(gen); 
              p:=elenco_prez; 
              while p<> nil do 
                begin 
                  write (p^.prezzo); 
                  write ('---> '); 
                  p:=p^.next; 
                end;
Ma non stampa nulla!! HELP!