Avatar billede dumbledore Nybegynder
29. november 2007 - 16:53 Der er 6 kommentarer og
1 løsning

2DArray, tilføj chars fra string til array listen.

Selve problemstillingen:

Cæsars kvadrat er en kode, hvor man bestræber sig på at antallet af tegn i teksten er et kvadrattal f.eks. 52 = 25. Man kan evt. fylde op med x’er til nærmeste kvadrattal, hvis antallet af tegn ikke er et kvadrattal. Klarteksten skrives op i et kvadrat med lige mange tegn på hver led, og herefter kodes teksten ved at man i stedet for at læse fra ventre mod højre læser oppefra og ned.

Hvis dette ikke giver mening; -

Så skal der oprettes et 2 Deminsionelt Array, hvor at der bliver tilføjet et bogstav(char) fra en anden string ind på hver plads i array'et, herefter skal det blot læses anderledes: hmm

f.eks. en String "Hej med dig du er sød du"
i array'et bliver det så til:
[H][e][g][e][d]
[e][d][x][r][x]
[j][x][d][x][d]
[x][d][u][s][u]
[m][i][x][ø][x]

Hvis det overhovedet ik giver mening : læs http://da.wikipedia.org/wiki/Tankados_Kode

Min kode indtil videre:

String string1;
    string1 = jt2.getText();
    System.out.println(string1);
   
    ArrayList strliste;
    strliste = new ArrayList();
   
    strliste.add(string1);
   
    jt2.setText("");
    jt2.append(strliste.toString());
    System.out.println(string1.length());
    int strlength;
    strlength = string1.length();
    int strtal;
    strtal = strlength * strlength;
    System.out.println(""+strtal);

(meget ser måske uoverskueligt ud, dog er der flere aspekter i opgaven, mit problem er at få min string til at blive opdelt ind i array'et med et bogstav på hver plads, herefter at skulle bytte dem rundt med f.eks. koden; array[x][y]=ta.substring(x+y*5,x+y*5+1);

Eller en smartere måde at gøre dette på? - jeg skal nok copy-paste min kode ud så den er tilgængelig for folk som MÅSKE skulle sidde i samme problem med at vi chars ind i et array for hver felt.. hmm
Avatar billede arne_v Ekspert
29. november 2007 - 23:27 #1
til inspiration:

    public static String transpose(String text) {
        int dim = (int)Math.ceil(Math.sqrt(text.length()));
        char[][] c = new char[dim][dim];
        for(int i = 0; i < dim; i++) {
            for(int j = 0; j < dim; j++) {
                int ix = i * dim + j;
                if(ix < text.length()) {
                    c[i][j] = text.charAt(ix);
                } else {
                    c[i][j] = ' ';
                }
            }
        }
        StringBuilder sb = new StringBuilder();
        for(int i = 0; i < dim; i++) {
            for(int j = 0; j < dim; j++) {
                sb.append(c[j][i]);
            }
        }
        return sb.toString();
    }
Avatar billede dumbledore Nybegynder
29. november 2007 - 23:58 #2
ah hmm hvad er Math.ceil samt Math.sqrt hmm er det blot der hvor den hiver hver char ud? lidt alla substring eller er jeg helt forkert på den?
Avatar billede arne_v Ekspert
30. november 2007 - 01:27 #3
Math.ceil returnerer oprundet til nærmeste heltal

Math.sqrt returnerer kvadratroden

jeg bruger det til at udregne dimensionerne på kvadratet udfra længden af strengen
Avatar billede dumbledore Nybegynder
30. november 2007 - 18:18 #4
oki takker, - sendte den med, brugte dog istedet denne:

// Først laver vi et array på 10 x 10 felter:

String crypArr[][];
crypArr = new String[10][10];
       
// Så henter vi vores data:
       
String txt = jt2.getText();

// Dette er min endelige løsning::
    try {
            for(int x = 0; x <= 4; x = x + 1){
                for(int y = 0;y <= 4; y = y + 1){
                   
                    if(x + y * 5 > txt.length()){
                        f1.setText("Kryptering korrekt.");
                       
                    } else{
                        crypArr[x][y] = txt.substring(x + y * 10, x + y * 10 + 5);
                       
                        jt2.append(""+ crypArr[x][y]);
                        f1.setText("Kryptering korrekt.");
                    }
                }
            }
        }catch(Exception Ex){
            f1.setText("Prøv igen!");
        }

(kan den måske optimeres ?)
Avatar billede arne_v Ekspert
01. december 2007 - 02:18 #5
jeg kan ikke genneskue hvad den laver

jeg troede at du ville putte bostaver ind i et 2D array

men du putter strenge med 5 bogstaver ind i et char array
Avatar billede dumbledore Nybegynder
03. december 2007 - 22:18 #6
ah koden blev ikke godkendt, dog sagde min lærer, at dit eksempel var rigtigt, så det må jeg sidde og bikse lidt med :) tak for inspirationen Arne_v ;)
Svar gerne :)
Avatar billede arne_v Ekspert
04. december 2007 - 02:17 #7
svar
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