Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071

    Coda composita

    Ho fatto la ricerca nel forum e non ho trovato nulla....
    Ho fatto questa coda composita:

    typedef struct servizio{
    int numero;
    int stato; //0 libero, 1 occupato
    union{
    int richiesta;
    int posizione;
    int tempo;
    servizio *succ;
    } coda;
    servizio *next;
    } posta;

    void inizializza();

    void main{
    posta *sportello=NULL;
    inizializza();
    }

    void inizializza(){
    int i;

    for(i=0;i<5;i++){
    sportello->numero = i+1;
    sportello->stato = 0;
    sportello=sportello->next;
    }
    sportello=NULL;

    C'è qualche errore da qualche parte? è esatta l'inizializzazione (a me preoccupa solo se l'accesso alla locazione successiva è esatto)? come faccio ad accedere a "richiesta" ora?

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    si ap arte gli errori di sintassi... vedi le () dopo il main... e il passaggio di parametri (inesistente) che ho corretto così:

    prototipo e funzione:
    void inizializza(posta *sportello)

    chiamata di funzione:
    inizializza(sportello);

    Mi riferisco a errori logici... grazie ancora...

    Ho corretto il main così:

    void main(){
    posta *sportello=NULL, *primo=NULL;
    primo=sportello;
    inizializza(sportello);
    sportello=primo;
    while(sportello!=NULL){
    cout<<sportello->numero;
    sportello=sportello->next;
    }
    }

    quando faccio partire il programma però mi compare la finestrella di windows che dice "inviare" "non inviare"...

  3. #3
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    Ho aggiornato il programma così.. però senza successo...

    codice:
    #include<iostream.h>
    
    	
    	typedef struct servizio{
    		int numero;
    		int stato;      //0 libero, 1 occupato
    		union{
    			int richiesta;
    			int posizione;
    			int tempo;
    			servizio *succ;
    		} coda;
    		servizio *next;
    	} posta;
    
    
    
    	
    void inizializza(posta *sportello);
    
    
    
    
    void main(){
    	posta *sportello;
    	sportello=NULL;
    
    	inizializza(sportello);
    
    //	while(sportello!=NULL){
    		cout<< sportello->numero;
    //		sportello=sportello->next;
    	//}
    }
    
    
    
    
    void inizializza(posta *sportello){
    posta *temp;
    	int i;
    
    	for(i=0;i<5;i++){
    		sportello = new posta;
    		sportello->numero = i+1;
    		sportello->stato = 0;
    		sportello =sportello->next;
    
    	}
    	//sportello=NULL;
    }

  4. #4
    Prova così :
    codice:
    #include <iostream.h>
    
    typedef struct servizio
    {
    	int numero;
    	int stato;      //0 libero, 1 occupato
    	union
    	{
    		int richiesta;
    		int posizione;
    		int tempo;
    		servizio *succ;
    	} coda;
    	servizio *next;
    } posta;
    
    posta *inizializza( int postaNum)
    {
    	posta *first = new posta, *tmp = first;
    	
    	for( int i=0; i<postaNum; i++)
    	{
    		tmp->numero = i+1;
    		tmp->stato = 0;
    		tmp->next = new posta;
    		tmp = tmp->next;
    	}
    	tmp->next=NULL;
    	
    	return first;
    }
    
    int main()
    {
    	posta *sportello = inizializza( 5 );
    	
    	while(sportello->next!=NULL)
    	{
    		cout<<"Sportello "<<sportello->numero<<endl;
    		sportello=sportello->next;
    	}
    	return 0;
    }
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  5. #5
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    Ahhhh grazie mille... è da ieri che lottavo per inizializzare qulla cosa...
    e infine... penso che da come ho dichiarato la lista... dovrebbe essere una lista composita..
    quindi dal mio raginamento penso che in teoria ogni nodo (che qui si chiama sportello) sia collegato al nodo successivo e a una lista.... come faccio ad accedere alla lista?

    Se ho fatto giusto (e se ho capito quello che ho fatto) la lista interna dovrebbe essere di tipo coda.... ma che nome ha?

    In breve.. il mio problema è come faccio ad inserire la "richiesta" ????

  6. #6
    Originariamente inviato da Il Pazzo
    Ahhhh grazie mille... è da ieri che lottavo per inizializzare qulla cosa...
    e infine... penso che da come ho dichiarato la lista... dovrebbe essere una lista composita..
    [...]
    Osservando la definizione della struttura posta, con più attenzione noto delle 'anomalie',
    codice:
    typedef struct servizio
    {
    	int numero;
    	int stato;      //0 libero, 1 occupato
    	union
    	{
    		int richiesta;
    		int posizione;
    		int tempo;
    		servizio *succ;
    	} coda;
    	servizio *next;
    } posta;
    Il puntatore ad un elemento di tipo 'servizio' all'interno della union è inutile (va bene invece la next),
    in effetti la stessa union sembra superflua, sicuro che sia necessaria ?
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  7. #7
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    si in pratica nel libro che ho io.. c'è scritto che sta cosa qui è una lista composita... nel libro mi fa vedere la dichiarazione della lista (che in pratica ho copiato cambiando però i nomi)... poi dice "L'implementazione delle funzioni primitive (inserimento in testa, cancellazoine, inserimento in coda, etc... ) non presentano particolari difficoltà"...

    mah!?!?! il cavolo non rappresentano nessuna difficoltà.. per me ste liste (anche le più semplici ) sono un tabù assoluto...

    Nel programma di sviluppo che usa effettivamente quando scrivo "tmp->" mi compare una piccola finestrella dove sono riportati i componenti della struttura, fra cui c'è coda... però non riesco a fare nulla quando scrivo "tmp->coda".. non la riesco ad inizializzare a NULL... a un intero... niente.. boh...

  8. #8
    Forse stai saltando un pò di tappe, dovresti fare pratica con programmi più semplici

    Comunque nel tuo esempio puoi accedere all'intero richiesta così :

    sportello->coda.richiesta = 333
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  9. #9
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    non è la stessa cosa di scrivere


    sportello->coda->richiesta?


    si lo so.. ma volevo provare a darmi un esame all'uni.. ma sicuramente non ci arrivo più... pensavo fossero più semplici.. a guardarle non sembrao così complesse

  10. #10
    Originariamente inviato da Il Pazzo
    non è la stessa cosa di scrivere
    sportello->coda->richiesta?
    No, non è la stessa cosa, dato la union (all'interno della struttura) è allocata dinamicamente,
    (dall'operatore new) mentre la variabile di tipo int richiesta no.
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

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.