
Originariamente inviata da
LuLyLuNa
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;
}
}