Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    305

    [C++] operatore freccia ( -> )

    Qualcuno sà commentare con spigazione cosa le righe di questo code?
    l'ho fatto io, qualcuno mi può correggere??

    #include <iostream.h>

    struct Lnodo { //Struttura.... bhè questo è facile
    char dato; //stringa
    Lnodo *succ; //punto la prima cella della struttura
    };

    void main () {
    Lnodo *base=NULL, *p; //la prima cella è 0, *p=puntatore a che?
    cout << "Introdurre una sequenza di caratteri (^Z per terminare):" << endl;
    char ch; //dato stringa
    while (cin.get(ch)) { //ciclo
    p = new Lnodo; //p = prima cella struttura Lnodo e nuovo oggetto
    p->dato = ch; // p->dato equivale a (*p).dato
    // p punta a dato e prende il primo char
    p->succ = base; // p punta alla locazione dell'oggetto base 0=NULL
    base = p; // base (locazione)=indirizzo di p
    }
    while (p) {
    cout << p->dato; //non lo sò
    base = p; //non lo sò
    p = p->succ; //non lo sò
    delete base; //cancello gli oggetti creati con new
    }
    }


    quello che non capisco è se scrivo okay mi stampa yako.
    Perchè inizia al contrario?
    succ è l'indirizzo della cella come p?
    pure base è un puntatore alla locazione o indirizzo?
    ---------------

    documentate voi passo passo e ben documentato
    per chiarire una volta per tutte.

    ho il cervello un pò bruciato!!!

  2. #2
    Utente di HTML.it L'avatar di Invio
    Registrato dal
    Sep 2003
    Messaggi
    60
    Be intanto comincia con dare una dimensione al dato
    per poter essere una stringa, come adesso è solo una variabile char

    struct Lnodo { //Struttura.... bhè questo è facile
    char dato[30]; //stringa di 30 carateri o se vuoi di più
    Lnodo *succ; //punto la prima cella della struttura
    };





  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    305
    Guarda che se fai girare questo listato esso funziona

    se qualcuno vuole commentarlo meglio........ perchè non riesco a capirlo fino in fondo

  4. #4

    Re: [C++] operatore freccia ( -> )

    Originariamente inviato da scancode
    codice:
    #include <iostream>
    using namespace std;
    
    // questa struttura serve per creare una una lista di caratteri
    struct Lnodo {      //Struttura.... bhè questo è facile
           char dato;   //carattere
           Lnodo *succ; //punto la prima cella della struttura
    };
    
    int main () {
    Lnodo *base=NULL, *p; //la prima cella è 0, *p non punta a nulla
    cout << "Introdurre una sequenza di caratteri (^Z per terminare):" << endl;
    char ch; //dato stringa
    //in questa fase i caratteri letti in input vengono inseriti in testa alla lista puntata da p
    while (cin.get(ch)) { //ciclo
       p = new Lnodo; //p = prima cella struttura Lnodo e nuovo oggetto
       p->dato = ch;    // p->dato  equivale a  (*p).dato
                        // p punta a dato e prende il primo char
       p->succ = base;  // p->succ punta alla locazione dell'oggetto base 0=NULL
       base = p;        // base (locazione)=indirizzo di p
       }
    //in questa fase i caratteri della lista p, vengono stampati in output
    while (p) {
       cout << p->dato; //carattere nel nodo p
       base = p;        //base punta al nodo da cancellare
       p = p->succ;     //p punta al nodo successivo
       delete base;     //cancella il nodo contenente il carattere già stampato
       }
      return 0;
    }
    quello che non capisco è se scrivo okay mi stampa yako.
    Perchè inizia al contrario?
    perchè i caratteri vengono inseriti ogni volta in testa alla lista
    codice:
    lista p
      \->[o][-]->[k][-]->[a][-]->[y][-]->[\]
    ecco perchè, nel momento in cui la stampi, viene fuori la scritta
    "okay"

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    305
    ti ringrazio ma nel momento in cui stampo viene yako.
    ........ sei stato chiaro sulla struttura non e carattere. l'ultimo dubbio è forse il while(p)
    ...... come mai legge il pimo carattere e stampa per prima
    y-> poi a->k->o-> ......??


    perchè recupera dal fondo della lista
    non riesco a capire il while (p)
    cioè mentre p.....che cosa se non c'è ++ o --

  6. #6
    Originariamente inviato da scancode
    ti ringrazio ma nel momento in cui stampo viene yako.
    ........ sei stato chiaro sulla struttura non e carattere. l'ultimo dubbio è forse il while(p)
    ...... come mai legge il pimo carattere e stampa per prima
    y-> poi a->k->o-> ......??
    infatti ho sbagliato a invertire le parole.

    se scrivi "okay" la lista viene così costruita

    codice:
    inserimento di o
    
     p
      \->[o]->NULL
    
    inserimento di k
    
     p
      \->[k][-]->[o][-]->NULL
    
    inserimento di a
    
     p
      \->[a][-]->[k][-]->[o][-]->NULL
    
    inserimento di y
     p
      \->[y][-]->[a][-]->[k][-]->[o][-]->NULL
    Ora, il secondo ciclio while non fa a altro che stampare la lista p, cioè stampa ogni carattere nel nodo p fino a che p non punta a NULL. Quando p punta a NULL, la condizione del while (p) non è soddisfatta e non entra nel loop.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.