Esercizio in Delphi
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 marca... Io l'ho fatto così ma mi da errore nella compilazione...
Mi date una manina?
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;
Mi date una manina?


Risposte
e poi nel main assegno ad una variabile y il valore della funzione...ma non funziona...
Ho modificato così:
E poi nel main:
Ma non stampa niente..HELP!
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:
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 niente..HELP!
