Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C++] Puntatori che non vanno in alberi n-ari

    Salve a tutti,
    ho un problema veramente strano su una determinata realizzazione degli alberi N-ari.

    In poche parole ho una superclasse che si chiama Albero, che ha solo metodi virtuali, ed una classe figlia AlberiLD che implemente una determinata realizzazione di alberi in questo modo:

    Ovvero ci sono due tipi di nodo, un nodo etichetta ed un nodo di servizio. Il nodo etichetta punta ad un etichetta di tipo _tipoelem, ed al primo figlio del nodo stesso.

    Il figli a loro volta sono una lista di nodi di servizio (puntati dai vari puntatori a primo figlio) sono una lista di puntatori che puntano al fratello di un determinato nodo, ed ad un etichetta.

    Ovvero ho una radice R di tipo nodo etichetta, se prendo il puntatore a primofiglio ottengo il primo della lista di nodi di servizio, questa lista è una lista di puntatori ai figli di R. Spostandomi su un figlio di R potrò passare ad un'altra lista di nodi servizio per ottenere i figli del figlio di R e così via.

    Non ci sono collegamenti verso l'alto ovvero ogni volta per sapere il padre di un nodo devo scorrrermi l'albero n-ario dalla radice e farmi i confronti.

    I due tipi di nodi vengono gestiti tramite una union che mi sta dando non pochi problemi.

    Un problmea che mi da è che la mia funzione insprimofiglio (che inserisce un albero come primo figlio di un determinato nodo), applicata sulla radice, mi inserisce il primo figlio, il secondo, poi quando inserisce il terzo mi perde il primo, quando inserisco il quarto mi perde il secondo. Insomma non so come mi rimangono memorizzati solo gli ultimi nodi inseriti.

    Ci sto veramente impazzendo da tutta una giornata, vi copioincollo il codice su ideone e se avete qualche idea è sempre ben accetta
    http://www.ideone.com/QtiTi

    Vi ringrazio in anticipo per qualsiasi aiuto,
    Neptune.
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  2. #2
    Mi sa che erano quelle assert che mi combinavano casini senza manco accorgermene.

    Qual'è il modo più elegante secondo voi per risolvere quelle assert? Voi direte una bella gestione delle eccezzioni?
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  3. #3
    Ho momentaneamente aggiornato tutti gli assert con degli if per evitare scherzetti e questa è la versione del codice aggiornata:

    http://www.ideone.com/6lpa7

    Ora però ho un problema, su windows il codice viene compilato senza errori, viene eseguito del tutto, solo che alla fine dell'esecuzione termina come se fosse crashato, ovvero mi appare una schermata che dice "che ha smesso di funzionare" come qunado crasha (eppure non ce ne sono più di assert nascoste che lo fanno terminare. Inoltre esegue tutto "bene" o almeno credo.

    Su Xubuntu invece si esegue normalmente e senza crashare.

    Qui su windows ho eclipse + mingw, su ubuntu ho eclipse e credo g++ o qualcosa di simile.

    Secondo voi cosa può essere? come mai crasha cosi? Anche su ideone dice che "ci sono problemi" quando non ce ne sono.
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

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.