Rail fence, błąd w kodzie

0

program wpada w petle nieskonczona. zapelniam tablice dwuwymiarowa. co jest nie tak?

Scanner skaner = new Scanner(System.in);
        String word = skaner.nextLine();
        char[] tab1 = new char[100];
        tab1 = word.toCharArray();
        char[][] tab2 = new char[100][100];
        int railf = skaner.nextInt();
        int i = 0;
        int j = 0;

        while (i < tab1.length) {
                while (j <= railf && j > 0) {
                    tab2[i][j] = tab1[i];
                    i++;
                    j++;
                }
                while (j >= 0&&j<railf) {
                    tab2[i][j] = tab1[i];
                    i++;
                    j--;
                }
            
        }
0

No ale co ten kod robi/ma robić?

2

Pierwsza pętla wewnętrzna while nigdy się nie wykona: j ma na starcie wartość 0.
Druga pętla wewnętrzna while wykona się dokładnie raz.
Zatem i nigdy nie przekroczy jedynki.

0
Patryk27 napisał(a):

No ale co ten kod robi/ma robić?

ma dodawac do tablicy dwuwymiarowej elementy z tablicy jednowymiarowej wg pewnego schematu. zalozmy, ze railf=3, slowo ktore ma zostac dodane do tablicy to "kryptografia". tutaj k[0][0],r[1][1],y[2][2],p[3][1],t[4][0]
k t a
r p o r f a
y g i

1

Nie prościej było podać link do opisu kodu? https://pl.wikipedia.org/wiki/Szyfr_p%C5%82otkowy lub https://en.wikipedia.org/wiki/Rail_fence_cipher

        String word = skaner.nextLine();
        char[] tab1 = word.toCharArray();        
        int railf = skaner.nextInt();
        char[][] tab2 = new char[tab1.length][railf];
        
        int i = 0;
        int j = 0;
        boolean down = true;
 
        while(i < tab1.length) 
        {
            tab2[i][j] = tab1[i];
            if(down)
            {
                j++;
                if(j == railf)
                {
                    j-=2;
                    down = false;
                }
            }
            else
            {
                j--;
                if(j == -1)
                {
                    j+=2;
                    down = true;
                }
            }
            i++;
        }

1 użytkowników online, w tym zalogowanych: 0, gości: 1