03/06/12 8:28
fabioser
Salve a tutti. Ho il seguente semplice problema da sottoporre all'attenzione degli amici del forum. Il programma riportato di seguito, che dovrebbe stampare una lista memorizzata in ingresso in forma non ricorsiva, non mi accetta la formulazione in maniera dinamica, ovvero mi stampa solo la prima lista ma non le successive, se io rispondendo 'n' alla domanda 'Finito?' chiedo al programma medesimo di continuarea 'girare'. Vorrei sapere dov'è che sbaglio; forse nella formulazione della procedura di stampa? Riporto di seguito il codice, ove
Scusandomi in anticipo per la banalità della questione e per gli eventuali errori commessi, rimango in attesa di una risposta.Ciao!!!
pcostituisce il puntatore della lista e
pinizil puntatore iniziale:
program LeggiEStampaNonRicorsivamente(input,output); type punt=^elem; elem=record val : integer; next : punt; end; var p,piniz: punt; k,n : integer; risposta : char; finito : boolean; procedure LeggiEMemorizza( var p,piniz : punt ); begin for k:=1 to n do begin if piniz=nil then begin new(piniz); p:=piniz; end else begin new(p^.next); p:=p^.next; end; read(p^.val); p^.next:=nil; end; end;{fine procedura LeggiEMemorizza} Procedure StampaLista( var p,piniz : punt); begin new(p); p:=piniz; repeat write(piniz^.val:2,' '); piniz:=piniz^.next; until piniz^.next=nil; write(piniz^.val:2,' '); readln; end;{ fine procedura StampaLista } { corpo del programma } begin repeat writeln('------------------------- Dati di ingresso -------------------------'); writeln; writeln; write('Fornire la lunghezza della lista: '); readln(n); writeln; writeln('Fornire la lista in ingresso:'); writeln; LeggiEMemorizza(p,piniz); writeln; writeln('La stampa della lista e'':'); writeln; StampaLista(p,piniz); writeln; writeln; writeln('Finito?'); writeln; writeln('Scrivere ''s'' per finire ''n'' per continuare'); writeln; readln(risposta); finito:=(risposta='s'); readln; until finito; end.
Scusandomi in anticipo per la banalità della questione e per gli eventuali errori commessi, rimango in attesa di una risposta.Ciao!!!
aaa