Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    52

    [Pascal]Scrittura di una lista simmetrica

    Salve a tutti amici del forum. Ho il seguente problema da risolvere riguardo alla scrittura di una lista simmetrica in Pascal. La procedura da me elaborata infatti mi stampa la lista intera solo se è composta da un numero pari di cifre altrimenti me la tronca all'ultimo elemento. C'è qualcuno di voi che è in grado di suggerirmi dove sbaglio? ecco il codice:

    codice:
       . . .
    
    type punt=^elem;
         elem= record
                     val: integer;
                     back : punt;
                     next : punt;
               end;
    var p,q : punt;
        m : integer;
    
        procedure LeggiEScriviLista( var p,q : punt; k : integer);
        begin
             if k=0
             then p:=nil
             else begin
                       new(p);
                       read(p^.val);
                       new(q);
                       read(q^.val);
                       p^.back:=q;
                       write(p^.val,' ');
                       write(q^.val,' ');
                       LeggiEScriviLista(p^.back,q,k-1);
                  end;
        end;{ Fine procedura LeggiEScriviLista }

    Ringraziandovi sin d'ora per l'aiuto saluto utenti e moderatori del Forum.Ciao!!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    52
    A beneficio di tutti gli utenti del Forum pubblico la soluzione del problema.

    codice:
    program ScritturaDiUnaListaSimmetrica(input,output);
    label 99;
    const bell=07;
    type punt=^elem;
         elem= record
                     val: integer;
                     back : punt;
                     next : punt;
               end;
    var p,q : punt;
        m : integer;
    
        procedure LeggiEScriviLista( var p,q : punt; k : integer);
        begin
             if k=0
             then p:=nil
             else begin
                       new(p);
                       read(p^.val);
                       write(p^.val,' ');
                       new(q);
                       read(q^.val);
                       p^.back:=q;
                       write(q^.val,' ');
                       LeggiEScriviLista(q,p^.back,k-1);
                  end;
        end;{ Fine procedura LeggiEScriviLista }
    
         
    { Corpo del programma }
    
    begin
         writeln('------------------------- Dati di ingresso --------------------------');
         writeln;
         write('Fornire la lunghezza della lista: ');
         readln(m);
         writeln;
         if m>=20 then begin
                            writeln(chr(bell),'Errore nei dati di ingresso!- STOP -');
                            goto 99;
                       end
                  else begin
                            writeln('Fornire la lista: ');
                            writeln;
                            LeggiEScriviLista(q,p,m);
                       end;
         99 :
         readln;
         
    end.
    Grazie a Tutti.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.