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!