Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    26

    [C++] Torneo ad eliminazione diretta (Tree)

    Ciao, sono uno studente di ingegneria e sto cercando di implementare un semplice torneo ad eliminazione diretta ad N giocatori (con N definito dall'utente), mi è stato detto di usare un albero, il linguaggio che uso è il C++;

    Il programma si compone di diverse classi, e ci sono dei metodi per determinare il vincitore di una partita, cerco di includere solo ciò che è fondamentale per riuscire a spiegare di cosa sto parlando.

    Innanzitutto ho creato una classe "Giocatore" che si compone di diverse funzioni e di dati membro specifici. Ho poi creato una classe "Partita", che si compone di diverse funzioni, tra cui una che prende in input i puntatori a due giocatori e ne decreta il vincitore, facendo dei particolari calcoli sui dati membro.

    Quello che devo implementare è essenzialmente un albero binario che abbia solo il puntatore al padre e non ai figli.

    Prima devo giocare tutte le partite sulle foglie, e poi, man mano, copiare nei padri i vincitori di ogni match. I nodi padri, radice inclusa, inizialmente sono vuoti. E devo partire quindi dalla lettura delle foglie.

    Ho qualche problema a visualizzare la soluzione, c'è qualcuno che potrebbe aiutarmi?

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Una soluzione potrebbe essere di avere una classe partita che può contenere 2 oggetti, ognuno può essere una partita o un giocatore. Quando giochi la partita, se hai due giocatori risolvi normalmente, se hai una partita propaghi il gioco. In questo modo giocando l'ultima partita il calcolo si propaga fino alla base.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    26
    Ti ringrazio, ho implementato un albero simile.
    Infatti inizialmente avevo pensato di fare un albero di sole partite, od uno di soli giocatori, invece porre gli operandi (giocatori) sulle foglie, e gli operandi (partite) sui nodi interni ha risolto la situazione, applicando una visita simile a quella post order. Una specie di notazione polacca inversa un po' modificata.

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Quote Originariamente inviata da Flamber Visualizza il messaggio
    Ti ringrazio, ho implementato un albero simile.
    Infatti inizialmente avevo pensato di fare un albero di sole partite, od uno di soli giocatori, invece porre gli operandi (giocatori) sulle foglie, e gli operandi (partite) sui nodi interni ha risolto la situazione, applicando una visita simile a quella post order. Una specie di notazione polacca inversa un po' modificata.
    Felice di essere stato utile.
    In realtà con un albero hai rapresentato una notazione infissa. La notazione postfissa sarebbe rappresentabile linearmente. Detto g_n un giocatore e p l'operazione partita, puoi rappresentare un torneo in questo modo
    codice:
    #1 giocatore
    g_1
    #2 giocatori
    g_1 g_2 p
    #3 giocatori
    g_1 g_2 p g_3 p
    #oppure
    g_1 g_2 g_3 p p
    #4 giocatori
    g_1 g_2 p g_3 g_4 p p
    #e così via
    Come vedi in questo caso non hai rapporti padre figlio ma puoi rappresentare il torneo in una struttura lineare.
    Ovviamente con questa impostazione potresti risolvere il torneo linearmente senza ricorrere nei nodi figli, basta una stack machine.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Solo per curiosità, puoi spiegarmi meglio che fa il programma? Anche in privato se non vuoi divulgarlo.

    Sto cercando qualcosa di abbastanza complesso, ma non troppo, per giocherellare con un nuovo linguaggio e mi sembra che il tuo problema faccia al mio caso.

    Non preoccurati comunque, sarebbe solo a scopo di studio, e ti rimanderei indietro ogni risultato se gradisci.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    26
    ti ho mandato un PM

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.