Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicitÓ e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - chi mi pu˛ aiutare..??
Forum - C/C++ - chi mi pu˛ aiutare..??

Avatar
black5star (Normal User)
Newbie


Messaggi: 3
Iscritto: 21/09/2009

Segnala al moderatore
Postato alle 19:01
Lunedý, 21/09/2009
sto imparando a programmare in C++, e ho preso questo codice nel forum, x˛ nn ho capito come funzionano i 3 cicli for, chi mi pu˛ spiegare in dettaglio cosa fanno??

#include <iostream>
#include <string>
using namespace std;

struct lista
{
    string nome;
    string cognome;
    int eta;
    lista *next;
};

void leggi_nodo(int y, lista *r)
{
    cout <<y<< ") Inserisci il nome = ";
    cin >> r->nome;
    cout <<y<< ") Inserisci il cognome = ";
    cin >> r->cognome;
    cout <<y<< ") Inserisci l'eta = ";
    cin >> r->eta;        
}

void stampa_nodo(lista *pl)
{
    cout<<pl->nome<<endl;  
    cout<<pl->cognome<<endl;
    cout<<pl->eta<<endl;  
}

int main()
{
    lista *pl = NULL; // elemento corrente della lista
    lista *head = NULL; // primo elemento della lista
    lista *tail = NULL; // ultimo elemento della lista
    int i = 0;
    int k = 0;
    int y = 0;

    cout << "Inserisci il numero di nodi da creare (min 1) = ";
    cin >>k;
    
    for (y = 1; y <= k; ++y)
    {
        pl = new lista;
        pl->next = NULL;
        if (y == 1)
            head = pl;
        else
            tail->next = pl;
        leggi_nodo(y, pl);
        tail = pl;
    }

    cout<<"STAMPA:"<<endl;
    
    for (pl = head; pl != NULL; pl = pl->next)
    {
        stampa_nodo(pl);
    }

    for (pl = head; pl != NULL;)
    {
        lista *r = pl;
        pl = pl->next;
        delete r;
    }

    system("pause");
}

PM Quote
Avatar
Matthew (Member)
Expert


Messaggi: 387
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 20:00
Lunedý, 21/09/2009
Prima cosa quando posti un codice non postarlo come testo normale se no non si capisce niente...

Testo quotato

Postato originariamente da black5star:

sto imparando a programmare in C++, e ho preso questo codice nel forum, x˛ nn ho capito come funzionano i 3 cicli for, chi mi pu˛ spiegare in dettaglio cosa fanno??
Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. struct lista
  6. {
  7.     string nome;
  8.     string cognome;
  9.     int eta;
  10.     lista *next;
  11. };
  12.  
  13. void leggi_nodo(int y, lista *r)
  14. {
  15.     cout <<y<< ") Inserisci il nome = ";
  16.     cin >> r->nome;
  17.     cout <<y<< ") Inserisci il cognome = ";
  18.     cin >> r->cognome;
  19.     cout <<y<< ") Inserisci l'eta = ";
  20.     cin >> r->eta;        
  21. }
  22.  
  23. void stampa_nodo(lista *pl)
  24. {
  25.     cout<<pl->nome<<endl;  
  26.     cout<<pl->cognome<<endl;
  27.     cout<<pl->eta<<endl;  
  28. }
  29.  
  30. int main()
  31. {
  32.     lista *pl = NULL; // elemento corrente della lista
  33.     lista *head = NULL; // primo elemento della lista
  34.     lista *tail = NULL; // ultimo elemento della lista
  35.     int i = 0;
  36.     int k = 0;
  37.     int y = 0;
  38.  
  39.     cout << "Inserisci il numero di nodi da creare (min 1) = ";
  40.     cin >>k;
  41.      
  42.     for (y = 1; y <= k; ++y)
  43.     {
  44.         pl = new lista;
  45.         pl->next = NULL;
  46.         if (y == 1)
  47.             head = pl;
  48.         else
  49.             tail->next = pl;
  50.         leggi_nodo(y, pl);
  51.         tail = pl;
  52.     }
  53.  
  54.     cout<<"STAMPA:"<<endl;
  55.      
  56.     for (pl = head; pl != NULL; pl = pl->next)
  57.     {
  58.         stampa_nodo(pl);
  59.     }
  60.  
  61.     for (pl = head; pl != NULL;)
  62.     {
  63.         lista *r = pl;
  64.         pl = pl->next;
  65.         delete r;
  66.     }
  67.  
  68.     system("pause");
  69. }





Il primo ciclo for crea k nuove strutture "lista" e chiede all'utente i dati da scriverci all'interno.
Il secondo ciclo stampa sullo schermo i valori delle variabili racchiuse nelle strutture.
Il terzo ciclo cancella le strutture .

Ultima modifica effettuata da Matthew il 21/09/2009 alle 20:01


"I have never let my schooling interfere with my education." Mark Twain
PM Quote
Avatar
black5star (Normal User)
Newbie


Messaggi: 3
Iscritto: 21/09/2009

Segnala al moderatore
Postato alle 23:36
Lunedý, 21/09/2009
Scusami ti posso chiedere un ulteriore aiuto??
Mi puoi spiegare pi¨ dettagliatamente (magari rigo per rigo) il primo ciclo for??
Perpiacere..e sempre se non disturbo troppo.

PM Quote
Avatar
Matthew (Member)
Expert


Messaggi: 387
Iscritto: 29/01/2007

Segnala al moderatore
Postato alle 3:51
Martedý, 22/09/2009
Codice sorgente - presumibilmente C#

  1. int main()
  2. {
  3. ....
  4. for (y = 1; y <= k; ++y)
  5.     {
  6.         pl = new lista; //Crea un nuovo oggetto "lista" e imposta il puntatore pl all'inizio di esso
  7.         pl->next = NULL; //Imposta valore null al puntatore next contenuto nell'oggetto a cui punta pl
  8.         if (y == 1)
  9.             head = pl; //Punta head allo stesso indirizzo a cui punta pl
  10.         else
  11.             tail->next = pl; //Punta a pl il puntatore next contenuto nella struttura a cui punta tail
  12.         leggi_nodo(y, pl); //Esegue la funzione leggi_nodo
  13.         tail = pl; //Punta tail alla struttura a cui pl punta
  14.     }
  15. ...
  16. }


Ultima modifica effettuata da Matthew il 22/09/2009 alle 3:52


"I have never let my schooling interfere with my education." Mark Twain
PM Quote
Avatar
black5star (Normal User)
Newbie


Messaggi: 3
Iscritto: 21/09/2009

Segnala al moderatore
Postato alle 10:16
Martedý, 22/09/2009
..GRAZIE MILLE..GENTILISSIMO E SCUSAMI ANCORA PER IL DISTURBO..!!

PM Quote