Ordinamento di una matrice per colonna

di il
5 risposte

Ordinamento di una matrice per colonna

Sto facendo un programma che simula un campionato con le matrici. Ho una matrice a tre dimensioni chiamata classifica[38][20][7] che contiene la classifica di ogni giornata .La prima dimensione fa riferimento alle 38 giornate di campionato, la seconda fa riferimento alle 20 squadre, e la terza ai dettagli della partita(punti conquistati,ammonizioni,ecc..) .Devo ordinarla in base al secondo spazio della terza dimensione che contiene i punti di ogni squadra. Per farlo io ho usato questo codice, mi sembra giusto, ma il compilatore non mi da nessun risultato.

for(int i=s;i<s+1 || s<37;i++){
	for(int j=0;j<20;j++){
		for(int k=19;k>=j;k--){
			if(classifica[i][j][1]>classifica[i][k+1][1]){
				        double    tmp=classifica[i][k][1];
				        double    y=classifica[i][k][0];
                        double    u=classifica[i][k][2];
                        double    r=classifica[i][k][3];
                        double    f=classifica[i][k][4];
                        double    b=classifica[i][k][5];
                        double    v=classifica[i][k][6];
                            
                            
			
					        classifica[i][k][0]=classifica[i][k+1][0];
			               	classifica[i][k][1]=classifica[i][k+1][1];
                            classifica[i][k][2]=classifica[i][k+1][2];
                            classifica[i][k][3]=classifica[i][k+1][3];
                            classifica[i][k][4]=classifica[i][k+1][4];
                            classifica[i][k][5]=classifica[i][k+1][5];
                            classifica[i][k][6]=classifica[i][k+1][6];
				
				
					classifica[i][k+1][0]=y;
					classifica[i][k+1][1]=tmp;
					classifica[i][k+1][2]=u;
					classifica[i][k+1][3]=r;
					classifica[i][k+1][4]=f;
					classifica[i][k+1][5]=b;
					classifica[i][k+1][6]=v;
			
			
                           
			}//cout<<classifica[i][k][1]<<endl;
		}
	}
	s++;
}




qualcuno sa spiegarmi cosa ho sbagliato?
so che sarebbe più facile utilizzare nodi o struct, ma il compito chiede di usare le matrici.

5 Risposte

  • Re: Ordinamento di una matrice per colonna

    Metti il codice tra tag "CODE" altrimenti non si capisce niente.
  • Re: Ordinamento di una matrice per colonna

    Ok, l'ho messo
  • Re: Ordinamento di una matrice per colonna

    Osservazione 1: mai mettere pezzi di codice non compilabile, perché se non possiamo provare quello che hai fatto, di certo non ci mettiamo a fare debugging a mente del tuo codice.
    Osservazione 2: fare quello che vuoi usando una matrice tridimensionale è possibile, ma mi sembra che stai sprecando inutili risorse (e ti complichi la vita in maniera esponenziale). Data la limitatezza della base dati, ti conviene (forse, è una mia valutazione spannometrica) memorizzare tutti i risultati delle partite in strutture, che memorizzi in un array di strutture da 380 elementi (38 giornate per 10 partite a giornata). I dati di classifica li memorizzi in un altro array di strutture, da 20 elementi. Fai una routine che prende i due array e aggiorna la classifica, poi farai una routine che per ogni tipo di dato richiesto in output deve solo riordinare un vettore da 20 elementi.
  • Re: Ordinamento di una matrice per colonna

    Ok,grazie dei consigli
  • Re: Ordinamento di una matrice per colonna

    Se ho ben capito vorresti ottenere la classifica parziale ad ogni turno. In tal caso, visto che l'ordinamento va fatto sempre in riferimento ad una data giornata, il problema si traduce nell'ordinare le righe, in base ad una specifica colonna, di una semplice matrice bidimensionale.
    Quindi concentrati nell'implementare la seguente funzione:
    void fun(int m[R][C], int J);
    che ordina le righe della matrice m in base al valore dell'indice J.
    Sono scarse 8 righe di codice e hai risolto il problema!
Devi accedere o registrarti per scrivere nel forum
5 risposte