PDA

View Full Version : [Java] come ordinare un array bidimensionale


kusco
29-06-2007, 08:37
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
es:input [(2,6,4),(1,9,0),(3,7,7),(5,8,5)],output[(2,8,4),(1,7,0),(3,9,7),(5,6,5)]
****************************************************************************************************/
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

andbin
29-06-2007, 09:04
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
long [][] A={{1234,456,876,9876,},{7545,38,377,3442,}};
Quindi, se ho capito bene, 456 e 38 (colonna indice 1) si devono scambiare e pure 3442 e 9876 (colonna indice 3).

Tieni presente che in Java gli array a più dimensioni sono semplicemente degli "array di array". Cioè tecnicamente è possibile che ogni riga dell'array bidimensionale sia di lunghezza diversa dalle altre (cioè una matrice non rettangolare). Nel tuo caso presupponiamo che quella che viene passata sia rettangolare.

Innanzitutto inizia a determinare il numero di colonne. Questo lo scopri andando a vedere la lunghezza della prima riga, cioè A[0].length (e qui appunto supponiamo che l'array sia rettangolare). Quindi determini il numero di righe, cioè A.length.
A quel punto devi fare un ciclo for per prendere tutte le colonne con indice dispari 1, 3, 5 .....
Quindi dovresti fare l'ordinamento della colonna. L'unica cosa è che non hai specificato quale algoritmo devi usare, se puoi sceglierlo tu o se ti è stato richiesto di usarne uno ben preciso.

kusco
29-06-2007, 10:21
intanto grazie per l'aiuto
lalgoritmo lo posso scegliere io
inoltrevolevo chiederti quando si costruisce uun metodo conviene dichiaarlo come public o come private???

wingman87
29-06-2007, 10:26
Se intendi usarlo all'esterno della classe lo dichiari come public, se invece lo usi solo all'interno dichiaralo pure private.

nuovoUtente86
29-06-2007, 18:36
intanto grazie per l'aiuto
lalgoritmo lo posso scegliere io
inoltrevolevo chiederti quando si costruisce uun metodo conviene dichiaarlo come public o come private???

I metodi che offrono funzionalità all' oggetto devono essere richiamabili dall' esterno,mentre i metodi che utilizzi tu per comodità implementativa vanno dichiarati privati.

Esempio banale


class Numero

int numero

public void somma(int i){
boolean b=verifica(i);..........}

private boolean verifica(int c){
verifica qualcosasu c}

come vedi dall' esterno nessuno deve conoscere e poter chiamare il metodo verifica che tu hai implementato.

feboss
29-06-2007, 21:48
kusco sei di catania?

kusco
30-06-2007, 10:21
kusco sei di catania?

Grazie ragazzi ho capito la storia del public e del private nell'esercizio che devo fare io sicuramene lo devo dichiarare Public...
Cmq nn ce nessuno di voi che sa come svolgere l'esercizio..
Cmq si sono di ct e sei di informtica se nn sbaglio ti ho visto tu l'hai passat prog 1??? :D

andbin
30-06-2007, 10:36
Cmq nn ce nessuno di voi che sa come svolgere l'esercizio..Mah ... io credo di averti spiegato bene, a grandi linee, come svolgere l'esercizio.
Tralascia un momento il public/private sul metodo. Essendo un esercizio, credo nessuno che si scandalizzi se dichiari il metodo public, private o con accesso di default ....

Stabilisci innanzitutto quante righe e colonne ha l'array bidimensionale (l'ho spiegato sopra ...) quindi fai un ciclo for in cui la variabile del ciclo indica la colonna. Devi prendere quelle con indice dispari. Ti basta testare se il bit 0 è a '1' per sapere se l'indice è dispari. A quel punto utilizzi l'algoritmo di ordinamento che hai scelto (e che fino ad adesso non hai specificato quale).

Consiglio: inizia a buttare giù del codice, se hai problemi, postalo che vediamo.

feboss
30-06-2007, 12:26
Grazie ragazzi ho capito la storia del public e del private nell'esercizio che devo fare io sicuramene lo devo dichiarare Public...
Cmq nn ce nessuno di voi che sa come svolgere l'esercizio..
Cmq si sono di ct e sei di informtica se nn sbaglio ti ho visto tu l'hai passat prog 1??? :D

è pazzesco, ho riconosciuto che sei di catania solo dal tipo di esercizio...
ormai gli esercizi di Gallo li conosco a memoria...
il difficile non è farli, ma capire il testo :cool:

Ti ricordi di me vedendo sta foto?
allora non passo inosservato :D

ok ora passiamo all'esercizio:
http://pastebin.ca/597030

e questa è una classe fatta da me che mi serve per velocizzare le cose sugli array, come stampe,riempimenti random e cosi via
http://pastebin.ca/597032

L'esercizio è fatto tutto sul main.
Inoltre ho utilizzato interi per semplicità.è la stessa cosa
per passarlo a metodo:
public long[][] reverseColonne(long[][] in);
alla fine fai un return out

ps:si l'ho passata prog adesso sto combattendo con prog2

kusco
30-06-2007, 14:47
[QUOTE=feboss;17733961]è pazzesco, ho riconosciuto che sei di catania solo dal tipo di esercizio...
ormai gli esercizi di Gallo li conosco a memoria...
il difficile non è farli, ma capire il testo :cool:

Ti ricordi di me vedendo sta foto?
allora non passo inosservato :D
certo che ti ho visto per quanti siamo in informatica, siamo 4 gatti hai ragione il difficile è capire il testo , mua vedremo come va sta rog 1 cmq grazie a te per la classe che hai creato e per leserizio svolto a desso lo studiero.
grazie anke a tutti quelli che mi hanno risp vediamo che si po fa???
:D

netsky3
23-01-2008, 09:57
toh....dei miei colleghi :D
a breve io ho l'esame di prog1 :D