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
C/C++ - di nuovo le liste..
Forum - C/C++ - di nuovo le liste..

Avatar
frankus89 (Normal User)
Rookie


Messaggi: 23
Iscritto: 20/02/2009

Segnala al moderatore
Postato alle 20:06
Martedì, 26/05/2009
questo il codice che implementa una coda dinamica:

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class LISTA{
  5.         int n;
  6.         LISTA *prox;
  7.         public:
  8.         LISTA* inizializza();
  9.         friend void inserisci(LISTA*,int);
  10.         friend int estrai(LISTA*);
  11.        
  12. }
  13.  
  14.  
  15.  
  16.  
  17. int main()
  18. {
  19.         LISTA * boss;
  20.         int numero,scelta,est;
  21.         boss=inizializza();
  22.         for (;;) {
  23.                 cout<<"opzione: \n";
  24.         cout<<"1) inserisci in coda  \n";
  25.         cout<<"2)estrai \n";
  26.         cout<<"scelta: ";
  27.        
  28.        
  29.         if (scelta == 1) { cout<<"numero: ";
  30.                                         cin>>numero;
  31.                                         inserisci(boss,numero);
  32.                                 }
  33.         if (scelta == 2) {
  34.                                         est=estrai(boss);
  35.         return 0;
  36. }
  37. }
  38. }
  39.  
  40. LISTA* LISTA::inizializza() {
  41.         LISTA *aus;
  42.         aus = NULL;
  43.         return aus;
  44. }
  45.  
  46.           void LISTA::inserisci(LISTA* p,int k){
  47.                  
  48.                 LISTA *aus,*x;
  49.                 if (p==NULL) {
  50.                         x = new LISTA;
  51.                         x->n=k;
  52.                         x->prox=NULL;
  53.                         x=p;
  54.                 }
  55.                 while (aus->prox!=NULL) aus=aus->prox;
  56.                 x=new LISTA;
  57.                 x->n=k;
  58.                 x->prox=NULL;
  59.                 aus=x;
  60.         }
  61.        
  62.   int LISTA::estrai(LISTA* p){
  63.         LISTA *aus,*x;
  64.         if (p==NULL) cout<<"impossibile estrarre";
  65.         while(aus->prox!=NULL) aus=aus->prox;
  66.         return aus->n;
  67. }



gli errori in fase di compilazione che non riesco a spiegarmi sono:


lista in c++.cpp:19: error: new types may not be defined in a return type
lista in c++.cpp:19: note: (perhaps a semicolon is missing after the definition of ‘LISTA’)

lista in c++.cpp:19: error: two or more data types in declaration of ‘main’
lista in c++.cpp:48: error: no ‘void LISTA::inserisci(LISTA*, int)’ member function declared in class ‘LISTA’
lista in c++.cpp:64: error: no ‘int LISTA::estrai(LISTA*)’ member function declared in class ‘LISTA’


spero possiate aiutarmi..saluti!:)

PM Quote
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 20:57
Martedì, 26/05/2009
Il punto e virgola dopo }:

Codice sorgente - presumibilmente C++

  1. class LISTA{
  2.     int n;
  3.     LISTA *prox;
  4.     public:
  5.     LISTA* inizializza();
  6.     friend void inserisci(LISTA*,int);
  7.     friend int estrai(LISTA*);
  8.    
  9. };


PM Quote
Avatar
frankus89 (Normal User)
Rookie


Messaggi: 23
Iscritto: 20/02/2009

Segnala al moderatore
Postato alle 22:02
Martedì, 26/05/2009
non cambia nulla..
stessi errori..

PM Quote
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 22:06
Martedì, 26/05/2009
E' strano, guarda te lo dice il compilatore:
ista in c++.cpp:19: note: (perhaps a semicolon is missing after the definition of ‘LISTA’)
Traduzione:
Forse un punto e virgola è mancante dopo la difinizione di LISTA

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 22:07
Martedì, 26/05/2009
Beh ... intanto ci sono errori di "base" ...

Ad esempio, quando scrivi

int numero,scelta,est;

Codice sorgente - presumibilmente Plain Text

  1. LISTA * boss;
  2. ...
  3. boss=inizializza();



cosa intendevi fare?

Semmai devi creare l'istanza della classe e chiamare il metodo ...

Codice sorgente - presumibilmente Plain Text

  1. LISTA * boss;
  2. boss = new(LISTA);
  3. boss->inizializza();



Ovviamente non risolvi cosi' tutti gli errori, che sono dovuti a uso non appropriato della sintassi del C++ ...
    

PM Quote