Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/34: Рейтинг темы: голосов - 34, средняя оценка - 4.85
4 / 4 / 0
Регистрация: 05.03.2013
Сообщений: 449
1

Квадрат полибия

16.11.2016, 03:23. Показов 6954. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
1) Составить двухмерный массив 5х5
2) Ввести слово, которое нужно закодировать.
3) Вывести закодированное слово.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class PolybiySquart {
 
    public static void main(String args[])  throws java.io.IOException {
        int[][] arr = new int[5][5];
        int a = 65, z = 89;
        Randoming.randoming(arr, a, z);
        System.out.println();
        charOutMass.charOutMas(arr);
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String c = reader.readLine();
        int lenth = c.length();
        char[] CharArray = c.toCharArray();
 
            for(int i = 0; i < arr.length; i++){
                for (int j = 0; j < arr[i].length; j++){
                    for(int k = 0; k < lenth; k++) {
                        if (CharArray[i] == arr[i][j]) {
                            System.out.print((char) arr[i+1][j]);
                        }
                    }
                }
            }
        }
 
 
    }
__________________________

Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
public class charOutMass {
    public static void charOutMas(int arr[][]) {
        char wow;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                wow = (char) arr[i][j];
                System.out.print(wow + "\t");
            }
            System.out.println();
        }
    }
}
___________________
Java
1
2
3
4
5
6
7
8
9
10
11
12
public class chekValue {
    public static boolean chekValue(int arr [][], int x){
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                if(x == arr[i][j]){
                    return true;
                }
            }
        }
        return false;
    }
}
__________________________
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Randoming {
    public static void randoming(int arr[][], int a, int z){
        int chek;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                do {
                    chek = a + (int) (Math.random() * ((z - a) + 1));
                }while(chekValue.chekValue(arr, chek));
                arr[i][j] = chek;
            }
        }
    }
}


Собственно вопрос в следующем. Матрица составлена, но при вводе слова, дает следующий результат:
Пример:
https://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{matrix} C  F  U  I  M \\  B  V  Y  L  P \\  W  X  O  R  S \\  D  E  A  G  Q \\  K  N  J  H  T \end{matrix}
Слово, которое нужно зашифровать: SLOVO
Результат: RRRRRAAAAA

Что в строках 14-18 не правильно?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.11.2016, 03:23
Ответы с готовыми решениями:

Метод Полибия шифрование и дешифрование на JAVA
Здравствуйте! Как реализовать дешифровку слова в джаве?! и чтобы слова вводились пользователем?!...

Шифр Полибия, ввод текста с клавиатуры
Нашел этот шифр на вашем сайте, хотелось бы узнать, а как сделать, чтобы можно было вводить текст с...

Шифр Полибия
Здравствуйте, товарищи форумчане! Бродил сегодня по интернету, наткнулся на статейку по шифрованию,...

Квадрат Полибия
Всем привет. Я ещё только начинаю рабоатаь в Делфи. Помогите пожалуйста переделать задачу на...

8
185 / 155 / 88
Регистрация: 04.10.2014
Сообщений: 397
16.11.2016, 07:39 2
Java
1
2
3
if (CharArray[i] == arr[i][j]) {//может CharArray[k] ))?
                            System.out.print((char) arr[i+1][j]);
                        }
1
4 / 4 / 0
Регистрация: 05.03.2013
Сообщений: 449
16.11.2016, 14:46  [ТС] 3
GreeNicee, теперь программа выдает следующее:
Миниатюры
Квадрат полибия  
0
185 / 155 / 88
Регистрация: 04.10.2014
Сообщений: 397
16.11.2016, 15:04 4
Java
1
2
3
4
5
if (CharArray[k] == arr[i][j]) {
                        if (i + 1 >= arr.length)
                            System.out.print((char) arr[0][j]);
                        else
                            System.out.print((char) arr[i + 1][j]);
1
4 / 4 / 0
Регистрация: 05.03.2013
Сообщений: 449
16.11.2016, 15:12  [ТС] 5
Все равно не то
Изображения
 
0
185 / 155 / 88
Регистрация: 04.10.2014
Сообщений: 397
16.11.2016, 15:16 6
А что должно быть?
1
4 / 4 / 0
Регистрация: 05.03.2013
Сообщений: 449
16.11.2016, 15:21  [ТС] 7
GreeNicee, Релизовывать метод шифрования Полибия, т.е. при вводе слова, программа должна искать по матрице одинаковые символы и записывать в новое слово те, которые стоят в столбце под ними, если же под ними нет ничего, то над ними. К примеру из предыдущего скриншота должно получиться следующее:
Слово: CHELOVEK
Шифр: IFYBDMYA

Надеюсь правильно объяснил
0
185 / 155 / 88
Регистрация: 04.10.2014
Сообщений: 397
16.11.2016, 15:38 8
Лучший ответ Сообщение было отмечено e73t4ph_2 как решение

Решение

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
for (char ch : CharArray) {
            next:
            for (int i = 0; i < arr.length; i++) {
                for (int j = 0; j < arr[i].length; j++) {
                    if (ch == (char) arr[i][j]){
                        if (i + 1 == arr.length)
                            System.out.print((char)arr[i-1][j]);
                        else System.out.print((char)arr[i+1][j]);
                        break next;
                    }
                }
            }
        }
1
4 / 4 / 0
Регистрация: 05.03.2013
Сообщений: 449
16.11.2016, 16:45  [ТС] 9
GreeNicee, Все супер все работает. Плюс еще добавил условие для Z:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if(ch == 'Z'){
System.out.print("Z");}
else{
 next:
            for (int i = 0; i < arr.length; i++) {
                for (int j = 0; j < arr[i].length; j++) {
                    if (ch == (char) arr[i][j]){
                        if (i + 1 == arr.length)
                            System.out.print((char)arr[i-1][j]);
                        else System.out.print((char)arr[i+1][j]);
                        break next;
                    }
                }
            }
}
И теперь все работает идеально. Спасибо
0
16.11.2016, 16:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.11.2016, 16:45
Помогаю со студенческими работами здесь

Квадрат Полибия
Уже написан код. Всё работает. Нужно лишь, чтобы слова разделяло пробелами. А то пишет шифр...

Квадрат Полибия
Написал скрипт шифрования текста методом Квадрата Полибия: &lt;?php $message = ''; $message...

Квадрат Полибия
в принципе без разницы,можно и на русском либо на англисском))) ну пожалуйста помогите Название...

Квадрат Полибия
Шифровальная таблица для латиницы представляет собой прямоугольник с шестью столбцами и пятью...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru