Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    104
    il codice per iniziare dal primo elemento della matrice dovrebbe scorrere riga per riga, tenendo "bloccata" la colonna... e inserire i caratteri del messaggio partendo da pos = 0
    quindi


    codice:
    if (f) {
                for (i = 0; i < c; i++) {
                    for (j = 0; j < r; j++) {
                        if (j == r-1 && i >= lastr) {
                            M[j][i] = ' ';
                        } else {
                            System.out.println("POS: "+pos);
                            M[j][i] = messaggio.charAt(pos);
                            pos++;
                        }
                    }    
                }
            }
    Ultima modifica di LuLyLuNa; 09-07-2015 a 23:03

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    104
    Quote Originariamente inviata da LuLyLuNa Visualizza il messaggio
    il codice per iniziare dal primo elemento della matrice dovrebbe scorrere riga per riga, tenendo "bloccata" la colonna... e inserire i caratteri del messaggio partendo da pos = 0
    quindi


    codice:
    if (f) {
                for (i = 0; i < c; i++) {
                    for (j = 0; j < r; j++) {
                        if (j == r-1 && i >= lastr) {
                            M[j][i] = ' ';
                        } else {
                            System.out.println("POS: "+pos);
                            M[j][i] = messaggio.charAt(pos);
                            pos++;
                        }
                    }    
                }
            }

    ma non funziona nemmeno così

  3. #3
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Quote Originariamente inviata da LuLyLuNa Visualizza il messaggio
    ma non funziona nemmeno così
    codice:
    class Main{
    	public static void main (String[] args) throws java.lang.Exception
    	{
    		String s = cifra(3, "Ciao come va?");
    		System.out.println(s);
    		System.out.println(decifra(3, s));
    	}
    	
    	public static String cifra(int key, String messaggio) {        
            int c = key;
            String output = "";
    
    
    
    
            messaggio = messaggio.replaceAll("\\s", "");
    
    
    
    
            int r = messaggio.length()/c;
            if (messaggio.length()%c != 0){
                r++;
            }
            int pos = 0;
         
            char[][] M = new char [r][c];
                for (int i = 0; i < r; i++) {
                    for (int j = 0; j < c; j++) {
                        if (pos == messaggio.length())
                        break;
                        M[i][j] = messaggio.charAt(pos);
                        pos++;
                    }
                }
                
                for (int i = 0; i < c; i++) {
                    for (int j = 0; j < r; j++) {
                        output += M[j][i];
                    }
                }
            return output;
        }
        
        public static String decifra(int key, String messaggio) {        
            int c = key;
            String output = "";
    
    
    
    
            messaggio = messaggio.replaceAll("\\s", "");
    
    
    
    
            int r = messaggio.length()/c;
            if (messaggio.length()%c != 0){
                r++;
            }
            int pos = 0;
         
            char[][] M = new char [r][c];
                for (int j = 0; j < c; j++) {
                    for (int i = 0; i < r; i++) {
                        if (pos == messaggio.length())
                        break;
                        M[i][j] = messaggio.charAt(pos);
                        pos++;
                    }
                }
                
                for (int i = 0; i < r; i++) {
                    for (int j = 0; j < c; j++) {
                        output += M[i][j];
                    }
                }
            return output;
        }
    }
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    104
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    codice:
    class Main{
        public static void main (String[] args) throws java.lang.Exception
        {
            String s = cifra(3, "Ciao come va?");
            System.out.println(s);
            System.out.println(decifra(3, s));
        }
        
        public static String cifra(int key, String messaggio) {        
            int c = key;
            String output = "";
    
    
    
    
            messaggio = messaggio.replaceAll("\\s", "");
    
    
    
    
            int r = messaggio.length()/c;
            if (messaggio.length()%c != 0){
                r++;
            }
            int pos = 0;
         
            char[][] M = new char [r][c];
                for (int i = 0; i < r; i++) {
                    for (int j = 0; j < c; j++) {
                        if (pos == messaggio.length())
                        break;
                        M[i][j] = messaggio.charAt(pos);
                        pos++;
                    }
                }
                
                for (int i = 0; i < c; i++) {
                    for (int j = 0; j < r; j++) {
                        output += M[j][i];
                    }
                }
            return output;
        }
        
        public static String decifra(int key, String messaggio) {        
            int c = key;
            String output = "";
    
    
    
    
            messaggio = messaggio.replaceAll("\\s", "");
    
    
    
    
            int r = messaggio.length()/c;
            if (messaggio.length()%c != 0){
                r++;
            }
            int pos = 0;
         
            char[][] M = new char [r][c];
                for (int j = 0; j < c; j++) {
                    for (int i = 0; i < r; i++) {
                        if (pos == messaggio.length())
                        break;
                        M[i][j] = messaggio.charAt(pos);
                        pos++;
                    }
                }
                
                for (int i = 0; i < r; i++) {
                    for (int j = 0; j < c; j++) {
                        output += M[i][j];
                    }
                }
            return output;
        }
    }

    ok perfetto funziona ti ringrazio infinitamente...
    però vorrei capire dove sbagliavo.. e come funzionano i cicli for in cui riempi la matrice...
    io all'inizio del metodo rimuovo tutti gli spazi!

    e infatti se il testo cifrato lo inserisci manualmente e clicco decifra, non funziona più il tuo codice
    Ultima modifica di LuLyLuNa; 10-07-2015 a 23:51

  5. #5
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Ho copiato e incollato il tuo codice, ho cambiato solo gli indici in modo da fare esattamente il contrario nella decifratura.

    E a dire il vero non mi sono neanche posto il problema di capire la trasformazione, ho solo fatto le operazioni inverse: riempito nell'ordine in cui estrai nella cifratura e estratto nell'ordine in cui riempi.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    104
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    Ho copiato e incollato il tuo codice, ho cambiato solo gli indici in modo da fare esattamente il contrario nella decifratura.

    E a dire il vero non mi sono neanche posto il problema di capire la trasformazione, ho solo fatto le operazioni inverse: riempito nell'ordine in cui estrai nella cifratura e estratto nell'ordine in cui riempi.
    se come messaggio cifrato passi il risultato del metodo cifra, tutto funziona.. perché il realtà il risultato è IIIOINONR[]VRFZ[] e ciò significa che in realtà non vengono eliminati gli spazi.

    ma se il messaggio da decifrare viene scritto manualmente quindi IIIOINONRVRFZ, non funziona più nemmeno il tuo codice

  7. #7
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    104
    la matrice che crei per la decifratura nel codice è errata..
    non so come funziona XD
    Ultima modifica di LuLyLuNa; 11-07-2015 a 12:45

  9. #9
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Quote Originariamente inviata da LuLyLuNa Visualizza il messaggio
    la matrice che crei per la decifratura nel codice è errata..
    non so come funziona XD
    Perché dovrebbe essere errata?

    Non sai come funziona cosa?
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2013
    Messaggi
    104
    Quote Originariamente inviata da Scara95 Visualizza il messaggio

    ho usato il tuo codice modificando le stringhe di input dei due metodi nel main..
    e ho aggiunto i system out per vedere come stampa la matrice..
    ed è sbagliata, ecco perché cambiando esempio non funziona, verifica tu e dimmi
    non so che fare

    http://ideone.com/e.js/Jq4kUa

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.