Ordinamento array bidimensionale come fare??

di il
4 risposte

Ordinamento array bidimensionale come fare??

Ciao ragazzi sono nuovo e sono un novello come vedrete anke in programmazione
pero voglio imparare
spero mi potrete aiutare anke se so che forse per voi faro domande banali
vi espongo il mio problema
/**************************************************************************************************
Esercizio della seconda prova d'esame di Prog1

Scrivere un metodo che prenda in input un array bidimensionale A di long, e restituisca un array A'
ottenuto da A invertendo l'ordine degli elementi in ogni singola colonna di indice dispari
****************************************************************************************************/
public class Esame{
public static void main(String[]args){
long [][] A={{1234,456,876,9876,},{7545,38,377,3442,}};
System.out.printl(metodo(A));
}
public static long[][] metodo(long [][]A){
}

}

ho fatto il main ma nn ho capito come fare ad invertire larray sapete aiutarmi

4 Risposte

  • Re: Ordinamento array bidimensionale come fare??

    Ciao.. ti riporto il codice che serve a risolvere l'esercizio compreso di test per provarlo:
    
    
    class prova{
    
    	public static void main(String [] args){
    	
    		long v[][] = { {1,2,3,4,5,6}, {6,5,4,3,2,1} };
    		long v1[][];
    		
    		v1 = inverti(v, 2, 6);
    		
    		for(int i = 0; i < 2; i++){
    			for (int j = 0; j < 6; j++){
    			
    				System.out.println(v1[i][j]);
    				
    			}
    		}
    		
    		
    	
    	}
    	
    	private static long [][] inverti(long v[][], int n_righe, int n_colonne){
    	
    		boolean dispari = false;
    		int k = n_colonne - 1;
    		int coeff = 0;
    		long ret[][] = new long [n_righe][n_colonne];
    		
    		if (n_colonne % 2 == 0){
    		
    			dispari = false;
    			coeff = n_colonne;
    		
    		}else{
    		
    			dispari = true;
    			coeff = n_colonne - 1;
    			
    		}
    		
    		for (int i = 0; i < n_righe; i++){
    		
    			if (i % 2 == 0){
    			
    				for (int j = 0; j < n_colonne; j++){
    				
    					ret[i][j] = v[i][j];
    				
    				}
    			
    			}else{
    				
    				for (int j = 0; j < (coeff / 2); j++){
    					
    					ret[i][j] = v[i][k];
    					ret[i][k] = v[i][j];
    					k--;
    				
    				}
    				
    				if (dispari == true){
    				
    					ret[i][coeff / 2] = v[i][coeff / 2];
    				
    				}
    			
    			}
    		
    		}
    		
    		return ret;
    	
    	}
    
    }
    
    
    Spero di esserti stato d'aiuto.. Saluti..
  • Re: Ordinamento array bidimensionale come fare??

    Intel ha scritto:


    ciao.. ti riporto il codice che serve a risolvere l'esercizio compreso di test per provarlo:
    
    
    class prova{
    
    	public static void main(String [] args){
    	
    		long v[][] = { {1,2,3,4,5,6}, {6,5,4,3,2,1} };
    		long v1[][];
    		
    		v1 = inverti(v, 2, 6);
    		
    		for(int i = 0; i < 2; i++){
    			for (int j = 0; j < 6; j++){
    			
    				System.out.println(v1[i][j]);
    				
    			}
    		}
    		
    		
    	
    	}
    	
    	private static long [][] inverti(long v[][], int n_righe, int n_colonne){
    	
    		boolean dispari = false;
    		int k = n_colonne - 1;
    		int coeff = 0;
    		long ret[][] = new long [n_righe][n_colonne];
    		
    		if (n_colonne % 2 == 0){
    		
    			dispari = false;
    			coeff = n_colonne;
    		
    		}else{
    		
    			dispari = true;
    			coeff = n_colonne - 1;
    			
    		}
    		
    		for (int i = 0; i < n_righe; i++){
    		
    			if (i % 2 == 0){
    			
    				for (int j = 0; j < n_colonne; j++){
    				
    					ret[i][j] = v[i][j];
    				
    				}
    			
    			}else{
    				
    				for (int j = 0; j < (coeff / 2); j++){
    					
    					ret[i][j] = v[i][k];
    					ret[i][k] = v[i][j];
    					k--;
    				
    				}
    				
    				if (dispari == true){
    				
    					ret[i][coeff / 2] = v[i][coeff / 2];
    				
    				}
    			
    			}
    		
    		}
    		
    		return ret;
    	
    	}
    
    }
    
    
    Spero di esserti stato d'aiuto.. Saluti..
    si ma quel for (int j = 0; j < (coeff / 2); j++){
    a cosa ti serve se lo hai scritto nel.la riga precedente..
  • Re: Ordinamento array bidimensionale come fare??

    Come si puo facilmente notare il primo for con indice j è utilizzato per riempire l'array nel caso in cui si stia scorrendo una riga con indice pari.. in questo caso si copia semplicemente la struttura della colonna così com'è.. ho voluto mettere quel for semplicemente per maggiore chiarezza su come lavora l'algoritmo visto che kusco è un neofita. Cmq se proprio vuoi il for si puo sostituire con un unico assegnamento:

    ret = v;

    Saluti...
  • Re: Ordinamento array bidimensionale come fare??

    Appunto..
Devi accedere o registrarti per scrivere nel forum
4 risposte