Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    79

    [C]Ciclo funzione inserimento in coda

    Ciao a tutti
    Eccomi ancora qui, tuttavia mi è rimasto un solo problema...risolto questo sarò a posto per un bel pò XD
    Allora...io ho una lista ordinata (che funziona correttamente) che tiene conto ordinatamente delle mosse più veloci fatte da entrambi gli utenti (quindi la priorità è data solo dal tempo e nn dai giocatori), in ordine da più veloce a più lenta ovviamente. Devo passare le prime 10 di queste mosse ad una coda...riesco a far passare e stampare a video solo la prima delle più veloci...perchè apparentemente non mi funziona il ciclo che dovrebbe far ripetere l'inserimento per 10 volte...

    Queste sono le mie strutture dati!

    codice:
    struct top10_mosse_gioc1_2  //lista ordinata
    {   
    double tempo;   
    int colonna;   
    int turno_utente;   
    struct top10_mosse_gioc1_2 *next;    
    };  
    struct top10_mosse_gioc1_2*testa=NULL;
    
    //CODA
    struct nodo
    { 
    int turno_utente;
     int colonna; 
    double tempo; 
    struct nodo *next; 
    }; 
    struct coda
    { 
    struct nodo *primo;  
    struct nodo *ultimo; 
    };
    
    struct coda coda;
    coda.primo = NULL;
    coda.ultimo = NULL;
    Il codice della mia funzione è

    codice:
      void coda_10_mosse(struct coda coda, struct top10_mosse_gioc1_2*testa)     
    {       
    struct nodo*nuovo;       
    struct top10_mosse_gioc1_2 *temp;       
    temp = testa;       
    int i;      
     for(i=0;i<=10;i++)       
    {       
    nuovo=(struct nodo*)malloc(sizeof(struct nodo));       
    nuovo->tempo = temp->tempo;      
     nuovo->colonna = temp->colonna;       
    nuovo->turno_utente = temp->turno_utente;       
    nuovo->next= NULL;            
    
     if(coda.primo==NULL)       
    {         
    coda.primo=nuovo;       
    }      
     else       
    {        
    coda.ultimo->next=nuovo;       
     coda.ultimo=nuovo;        
    }                  
    temp=temp->next;       
     }            
    stampa_coda(coda);              
    return;     
    }
    come ho già detto, il problema pare essere il for perchè se lo tolgo la funzione esegue correttamente il suo lavoro....ma non capisco dove sia sbagliato questo ciclo!!!

    :S help!!
    grazie in anticipo!!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Se scrivi così la for

    for(i=0;i<=10;i++)

    allora stai trattando 11 mosse, dalla 0 alla 10
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    79
    ok grazie, ma il problema è che mi crasha il gioco...per cui in questo caso 11 o 10 nn mi cambia troppo ^^

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Un crash è sintomo di un problema con i puntatori.

    Dove avviene il crash?

    Hai fatto un po' di debugging linea per linea?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    79
    if(coda.primo==NULL)
    {
    coda.primo=nuovo;
    }
    else
    {
    coda.ultimo->next=nuovo; ///A QUESTA RIGA SI FERMA IL DEBUG
    coda.ultimo=nuovo;
    }
    temp=temp->next;
    }
    stampa_coda(coda);
    return;
    }

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quindi, molto probabilmente il valore di

    coda.ultimo

    è NULL o sballato. Controlla se è così e perché.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    79
    ci guardero' meglio ma nn dovrebbe essere null perche' nn l ho inizializzato da nessuna parte a null. comunque ricontrollo. grazie

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E quale valore gli hai dato? E dove?

    Se non l'hai valorizzato allora il suo valore è casuale e sicuramente non valido.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    79
    ho controllato...ho fatto coda.primo e .ultimo uguale a Null nel main

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ecco ... quindi non potrai certo scrivere

    coda.ultimo->next
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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