Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Pascal - problema di tipi variabili nei doppi puntatori
Forum - Pascal - problema di tipi variabili nei doppi puntatori

Avatar
lucca (Normal User)
Pro


Messaggi: 84
Iscritto: 03/12/2009

Segnala al moderatore
Postato alle 15:34
Martedì, 04/01/2011
Salve a tutti,
ho un piccolo problema riguardo il tipo di una variabile nei doppi puntatori.
L'esecizio chiede di fare una tabella :

  nexts            nextd                
|_____|_____|_____| ---> |__|__| ---> |__|__|
  |
  |
  V
|__|__|__| ---> |__|__| ---> |__|__|
  |
  |
  V
|__|__|__| ---> |__|__| ---> |__|__|

dove la prima colonna ha il compito di "collegare" la riga dove essa risiede e la riga successiva.

Solamente che c'è un piccolo problema non riesco a "collegare" il campo nextd con quello alla sua sinistra!!!!!!!Il compilatore, giustamente dice che sono tipi diversi. Ecco qui il lavoro:

Codice sorgente - presumibilmente Delphi

  1. const
  2.   ncar=20;
  3. type
  4.   Tstringa=string[ncar];
  5.   Tpunta1=^Tnodo;
  6.   Tnodo=record
  7.           nexts:Tpunta1;
  8.           riga:byte;
  9.           nextd:Tpunta1;
  10.         end;
  11.   Tpunta2=^Trec;
  12.   Trec=record
  13.          info:Tstringa;
  14.          next:Tpunta2
  15.        end;
  16. var
  17.   Testa1:Tpunta1;
  18.   Testa2:Tpunta2;
  19. procedure inserisci(var FTesta1:Tpunta1;var FTesta2:Tpunta2);
  20. var
  21.   p,t:Tpunta1;
  22.   q:Tpunta2;
  23.   risp,risposta:char;
  24. begin
  25.   new(p);
  26.   FTesta1:=p;
  27.     while risp='n' do
  28.       begin
  29.         while risposta='n' do
  30.           begin
  31.             new(q);
  32.             FTesta2:=q;
  33.             p^.nextd:=q;    ecco dove mi dice errore
  34.             writeln('inserisci la lettera');
  35.             readln(q^.info);
  36.             writeln('inserire un''altra lettera? S\N');
  37.             readln(risposta);
  38.           end;
  39.          new(t);
  40.          p^.nexts:=t;
  41.          p:=t;
  42.          writeln('inserire una nuova riga? S\N');
  43.          readln(risp);
  44.       end;


P.S. Se ci sono altri errori ditemelo grazie


Aspetto da voi una risposta di correzione o miglioramento del codice, grazie.  

Ultima modifica effettuata da lucca il 04/01/2011 alle 15:50
PM
Avatar
gigisoft (Member)
Guru


Messaggi: 696
Iscritto: 11/10/2008

Up
1
Down
V
Segnala al moderatore
Postato alle 17:33
Martedì, 04/01/2011
Salve,
da quel che ho capito dovresti mettere nel record TNodo la dichiarazione:

Codice sorgente - presumibilmente Plain Text

  1. NextD: TPunta2



Ciao :k:

Luigi

PM
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 15:40
Martedì, 04/01/2011
metti il codice tra i tag CODE

PM
Avatar
lucca (Normal User)
Pro


Messaggi: 84
Iscritto: 03/12/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 18:26
Mercoledì, 05/01/2011
ok grazie molte

PM