Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di ivny
    Registrato dal
    Sep 2009
    Messaggi
    24

    [C++] ordinamento array di oggetti

    Buongiorno a tutti!
    Ho un problema con un algoritmo che dovrebbe ordinare un array di oggetti di classe team;
    la classe team, oltre ad avere una serie di variabili al suo interno, contiene anche un ulteriore array di oggetti di classe player(questo però non è da ordinare).
    Come potete immaginare, il programma deve prendere un array contenente i dati di 8 squadre di calcio e metterle in ordine in base al loro punteggio e, se due squadre sono a pari punteggio, in base alla differenza reti.
    Per motivi vari non posso usare funzioni sort e/o qsort e compagnia.
    Il codice che ho scritto è questo:

    codice:
    #define N 8
    #define P 10
    
    
    team pl_team[N];
    
    
    void PassaSquadra(int a)
    {
        int e;
        team tester;
        tester.nome = pl_team[a].nome;
        tester.gf = pl_team[a].gf;
        tester.gs = pl_team[a].gs;
        tester.pv = pl_team[a].pv;
        tester.pp = pl_team[a].pp;
        tester.pn = pl_team[a].pn;
        for(e=0; e<P; e++)
        {
            tester.giocatore[e].nome = pl_team[a].giocatore[e].nome;
            tester.giocatore[e].goal = pl_team[a].giocatore[e].goal;
        }
        pl_team[a].nome = pl_team[a-1].nome;
        pl_team[a].gf = pl_team[a-1].gf;
        pl_team[a].gs = pl_team[a-1].gs;
        pl_team[a].pv = pl_team[a-1].pv;
        pl_team[a].pp = pl_team[a-1].pp;
        pl_team[a].pn = pl_team[a-1].pn;
        for(e=0; e<P; e++)
        {
            pl_team[a].giocatore[e].nome = pl_team[a-1].giocatore[e].nome;
            pl_team[a].giocatore[e].goal = pl_team[a-1].giocatore[e].goal;
        }
    
    
        pl_team[a-1].nome = tester.nome;
        pl_team[a-1].gf = tester.gf;
        pl_team[a-1].gs = tester.gs;
        pl_team[a-1].pv = tester.pv;
        pl_team[a-1].pp = tester.pp;
        pl_team[a-1].pn = tester.pn;
        for(e=0; e<P; e++)
        {
            pl_team[a-1].giocatore[e].nome = tester.giocatore[e].nome;
            pl_team[a-1].giocatore[e].goal = tester.giocatore[e].goal;
        }
    }
    Questa è la funzione, che dovrebbe, dato un indice a, scambiare di posto l'oggetto di posto [a] con l'oggetto di posto [a-1]; N è il numero di squadre e P il numero di giocatori massimo per squadra (squadre da 5 più riserve))

  2. #2
    Utente di HTML.it L'avatar di ivny
    Registrato dal
    Sep 2009
    Messaggi
    24
    codice:
    int a;
    bool noCheck=false;
    while(noCheck=false)
    {
       noCheck=true;
       for(a=1;a<N;a++)
       {
          if(pl_team[a].punti()>pl_team[a-1].punti())             
          {
             PassaSquadra(a);
             noCheck=false;
           }
          elseif(pl_team[a].dr()>pl_team[a-1].dr())
          {
             PassaSquadra(a);
             noCheck=false;
           }
         }
    }
    Questa è invece la parte di codice che valuta se una squadra ha più punti/dr di quella in una pèosizione più in alto ed eventualmente le scambia.
    Il problema di tutto questo è che l'algoritmo non funziona e l'ordine rimane tale e quale.
    Qualcuno riesce a vedere l'errore che io non trovo?

    Scusate il doppio post, ma un singolo post ha un limite di caratteri che avevo sforato e dovevo scrivere tutto il codice per chiedere
    Ultima modifica di ivny; 25-10-2013 a 11:19

  3. #3
    Utente di HTML.it L'avatar di ivny
    Registrato dal
    Sep 2009
    Messaggi
    24
    Risolto, nella condizione del while avevo messo '=' invece di '=='
    Scusate, erroraccio di distrazione -.-'
    Ora però il programma si inchioda ogni volta che deve eseguire questa funzione, può essere dovuto al fatto che deve gestire parecchi dati? in fin dei conti non mi paiono tanti

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    "Si inchioda" vuol dire non termina più o hai un errore?

    Quanti sarebbero i dati in questione?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di ivny
    Registrato dal
    Sep 2009
    Messaggi
    24
    Risolto anche questo, scusa, falso allarme
    chiudete pure la discussione che è inutile

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.