Avatar billede boomshanka Nybegynder
19. februar 2005 - 18:16 Der er 7 kommentarer og
1 løsning

Hvordan laver man en ny struktur i 2-dimensionelle arrays?

Jeg har følgende struktur i et 2-dimensionelt array (myArray):

a1 a2 a3
b1 b2 b3

Er der en måde hvorved man kan ændre formatet til:

a1 b1
a2 b2
a3 b3

så metoden stadig virker hvis man ændre i antallet af rækker og kolonner i myArray? Helst ikke noget med "prøv om du ikke kan instantiere myArray med den rigtige struktur" :-)
Avatar billede arne_v Ekspert
19. februar 2005 - 18:32 #1
Du har vel 2 muligheder:

1)  lav et nyt array hvor der er byttet om på dimensionerne og
    kopiere data (dobbelt for løkke)

2)  behold struktuen som den er og nøjes med at bytte om på indexene
    når du skal bruge den transponerede
Avatar billede boomshanka Nybegynder
19. februar 2005 - 18:42 #2
Det er så 1) jeg er ude efter - har du et eksempel?
Avatar billede arne_v Ekspert
19. februar 2005 - 18:45 #3
5 minutter
Avatar billede arne_v Ekspert
19. februar 2005 - 18:54 #4
public class Transpose {
    public static int[][] transpose(int[][] a) {
        int[][] res = new int[a[0].length][a.length];
        for(int row = 0; row < res[0].length; row++) {
            for(int col = 0; col < res.length; col++) {
                res[col][row] = a[row][col];
            }
        }
        return res;
    }
    public static void main(String[] args) {
        int[][] a = new int[3][2];
        for(int row = 0; row < a[0].length; row++) {
            for(int col = 0; col < a.length; col++) {
                a[col][row] = (col + 1) * (row + 1);
            }
        }
        for(int row = 0; row < a[0].length; row++) {
            for(int col = 0; col < a.length; col++) {
                System.out.print(" " + a[col][row]);
            }
            System.out.println();
        }
        int[][] b = transpose(a);
        for(int row = 0; row < b[0].length; row++) {
            for(int col = 0; col < b.length; col++) {
                System.out.print(" " + b[col][row]);
            }
            System.out.println();
        }
    }
}
Avatar billede arne_v Ekspert
19. februar 2005 - 18:55 #5
Nu ved jeg ikke lige hvordan du gemmer din matrix, men ovenstående
skulle demonstrere teknikken.
Avatar billede boomshanka Nybegynder
19. februar 2005 - 19:17 #6
okay, jeg kigger den lige igennem og prøver mig lidt frem
Avatar billede boomshanka Nybegynder
19. februar 2005 - 19:23 #7
ja, det er præcis det jeg ledte efter (det er ikke 2-dimensionelle arrays jeg har brugt allermest i java, så det virkede umiddelbart lidt sort)

Smid bare et svar arne_v så får du dine point!
Avatar billede arne_v Ekspert
19. februar 2005 - 19:29 #8
kommer her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester