Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/25: Рейтинг темы: голосов - 25, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 30.03.2016
Сообщений: 13

Переделать код паскаля под джаву

15.05.2017, 18:36. Показов 5109. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста переделать код паскаля для использования в джаве.

Pascal
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
27
28
29
30
31
32
33
34
35
36
37
38
Const
     s4:array[0..15] of string[4]=('0000','0001','0010','0011','0100','0101','0110','0111','1000','1001','1010','1011','1100','1101','1110','1111');
    s5:array[0..15] of string[1]=('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
 
var s,h,kod,t:string;
    a:array[0..100000] of string[8];
    x:byte;
    i,j,n:longint;
    rez:string;
 
begin
writeln('Введите ваш текст:');
readln(s);
n:=0;
for i:=1 to length(s) do
 begin
  x:=ord(s[i]);
  n:=n+1;
  a[n]:='';
  while x>0 do
   begin
    a[n]:=chr(x mod 2+48)+a[n];
    x:=x div 2;
   end;
  while length(a[n])<8 do a[n]:='0'+a[n];
 end;
 n:=1;
 for i:=1 to length(s) do kod:=kod+a[i];
for i:=1 to length(kod) div 4 do
begin
t:=copy(kod,n,4);
n:=n+4;
for j:=0 to 15 do
if s4[j]=t then rez:=rez+s5[j];
end;
Writeln('Шифр: ',rez); 
 
end.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.05.2017, 18:36
Ответы с готовыми решениями:

Переделать код паскаля под джаву
Помогите пожалуйста переделать код паскаля для использования в джаве. Const a:array of...

Нужно перевести код из Паскаля на Джаву
uses crt; const Num = 3; var X:array of byte; W,Delta:array of real; Teta,Y,a,Sigma,Nu:real; Error,...

Delphi на Java (перевести этот код на Джаву)
Здравствуйте уважаемые форумчанины! Нужна помощь, перевести Делфи на язык Java. Условие самой задачи: Вычисление максимального и...

11
164 / 170 / 139
Регистрация: 28.11.2016
Сообщений: 301
16.05.2017, 11:58
Лучший ответ Сообщение было отмечено Иван123456 как решение

Решение

Вариант программы переписан максимально близко к коду Паскаль
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
public class Pascal {
 
    public static void main2(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("Введите Ваш текст:");
        String s = in.nextLine(); // введена строка текста
 
        String res = "";
        for (char c : s.toCharArray()) {
            res += String.format("%02X",(int)c);
        }
        System.out.println("Шифр:"+res);
    }
 
    public static void main(String[] args) {
        String[] s4 = new String[]{"0000", "0001", "0010", "0011", "0100", "0101", "0110",
                "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"
        };
        String[] s5 = new String[]{"0", "1", "2", "3", "4", "5", "6",
                "7", "8", "9", "A", "B", "C", "D", "E", "F"
        };
        String[] a = new String[100000]; // пустой массив длина строки не может быть фиксирована
        String s = "", kod = "", t = "", rez = "";
        int x;
 
        Scanner in = new Scanner(System.in);
        System.out.print("Введите Ваш текст:");
        s = in.nextLine(); // введена строка текста
 
        for (int i = 0; i < s.length(); i++) {
            x = (int) Character.valueOf(s.charAt(i)); // получить код ASCII
            a[i] = "";  // n работает с нуля
            while (x > 0) {
                a[i] = (char) ((x % 2) + 48) + a[i];
                x = (x / 2);
            }
            while (a[i].length() < 8) {
                a[i] = "0" + a[i];
            }
        } // отработали весь массив
        kod = "";
        for (int i = 0; i < s.length(); i++) {
            kod += a[i];
        }
 
        for (int i = 0; i < kod.length(); i += 4) {
            t = kod.substring(i, i + 4);
            for (int j = 0; j < s4.length; j++) {
                if (s4[j].equals(t)) {
                    rez = rez+ s5[j];
                }
            }
        }
        System.out.println("Шифр:" + rez);
    }
}
Все тоже самое, но проще
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Pascal2 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("Введите Ваш текст:");
        String s = in.nextLine(); // введена строка текста
 
        String res = "";
        for (char c : s.toCharArray()) {
            res += String.format("%02X",(int)c);
        }
        System.out.println("Шифр:"+res);
    }
}
1
51 / 51 / 23
Регистрация: 05.04.2010
Сообщений: 127
16.05.2017, 12:05
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public class Main {
 
    private static final String[] s4 = {"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"};
    private static final char[] s5 = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
 
 
    public static void main(String[] args) {
        String[] a = new String[100001];
        String kod = "";
        String rez = "";
        String t;
        System.out.println("Ввведите ваш текст:");
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        int n = 0;
        for (int i = 0; i < s.length(); i++) {
            byte x = (byte) s.charAt(i);
 
            a[n] = "";
            while (x > 0) {
                a[n] = (char) (x % 2 + 48) + a[n];
                x /= 2;
            }
            while (a[n].length() < 8) {
                a[n] = '0' + a[n];
            }
            n++;
        }
        n = 0;
        for (int i = 0; i < s.length(); i++) {
            kod = kod + a[i];
        }
        for (int i = 0; i < kod.length() / 4; i++) {
            t = kod.substring(n, n+4);
            n += 4;
            for (int j = 0; j < 15; j++) {
                if (s4[j].equals(t)) {
                    rez += s5[j];
                }
            }
        }
        System.out.println("Шифр: " + rez);
    }
}
1
0 / 0 / 0
Регистрация: 30.03.2016
Сообщений: 13
16.05.2017, 17:49  [ТС]
Огромное спасибо)
0
0 / 0 / 0
Регистрация: 30.03.2016
Сообщений: 13
17.05.2017, 18:14  [ТС]
Выдает вот такую ошибку
Exception in thread "main" java.lang.StringIndexOutOfBoundsExceptio n: String index out of range: 29
at java.lang.String.substring(String.java:1 963)
at javaapplication3.Deshifr.main(Deshifr.ja va:36)
C:\Users\Ivan\AppData\Local\NetBeans\Cac he\8.2\executor-snippets\run.xml:53: Java returned: 1
СБОРКА ЗАВЕРШЕНА СО СБОЕМ (общее время: 1 секунда)
Как исправить??
0
164 / 170 / 139
Регистрация: 28.11.2016
Сообщений: 301
17.05.2017, 18:35
Цитата Сообщение от Иван123456 Посмотреть сообщение
Выдает вот такую ошибку
Exception in thread "main" java.lang.StringIndexOutOfBoundsExceptio n: String index out of range: 29
Означает что Вы обращаетесь к строке с индексом 29 который больше длины строки.
И так как происходит это с substring похоже есть путаница в работе с substring.
Давайте сюда проблемный файл.
1
0 / 0 / 0
Регистрация: 30.03.2016
Сообщений: 13
17.05.2017, 19:05  [ТС]
Code
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public class Deshifr {
            public static void main(String[] args) {
     String[] a = new String[]{"0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"};
        String[] m = new String[]{"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
        byte g;
        String s,t,kod="",rez;
        char[] h = new char[1000000];
        short st,d,n;
        int i,j;
        float p;
 
        Scanner scanner = new Scanner(System.in);
        System.out.println("¬ведите код");
        s = scanner.nextLine();
        n=0;
        for (i=1 ; i < s.length() ; i++) {
            n++;
            t = s.substring(n, n+1);
            for (j = 0; j < 15; j++)
                if (t.equals(m[j])) {
                    kod += a[j];
                }
        }
        n=1;
        st=7;
        j=1;
        p=0;
        for (i = 0; i < kod.length(); i++) {
            t = kod.substring(n, n+1);
            g = Byte.decode(t);
            p = (float) (p + g * Math.pow(Math.E,Math.exp(2) * st));
            n++;
            if (st > 0) st--;
            else {
                st = 7;
                d = (short) Math.round(p);
                h[j] = (char) d;
                p=0;
                j++;
            }
        }
        for (i=0; i < s.length() / 2; i++) System.out.println(h[i]);
    
    }
}
0
164 / 170 / 139
Регистрация: 28.11.2016
Сообщений: 301
17.05.2017, 20:24
Class Deshifr
Кликните здесь для просмотра всего текста

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
public class Deshifr {
    public static void main(String[] args) {
        String[] a = new String[]{"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"};
        String[] m = new String[]{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"};
        byte g;
        String s, t, kod = "", rez;
        char[] h = new char[1000000];
        short st, d, n;
        int i, j;
        float p;
 
        Scanner scanner = new Scanner(System.in);
        System.out.println("¬ведите код");
        s = scanner.nextLine();
        n = 0;
        for (i = 1; i < s.length(); i++) {
//            n++;                        // ошибка строка работает с индекса 0
//            t = s.substring(n, n + 1);  // ошибка, дает просто символ, а нужен его hex code
            t = String.format("%02X", (byte) s.charAt(n)); // дает hexcode символа двухзначный вида 41 5A
            n++;
            for (j = 0; j < 15; j++) {
                if (t.substring(0,1).equals(m[j])) {  // первый символ hexCode
                    kod += a[j];
                }
            }
            for (j = 0; j < 15; j++) {
                if (t.substring(1, 2).equals(m[j])) { // второй символ  hexCode
                    kod += a[j];
                }
            }
        }
//        n = 1; // ошибка   строка работает с нуля
        n = 0;
        st = 7;
        j = 1;
        p = 0;
        for (i = 0; i < kod.length(); i++) {
            t = kod.substring(n, n + 1);
            g = Byte.decode(t);
            p = (float) (p + g * Math.pow(Math.E, Math.exp(2) * st));
            n++;
            if (st > 0) st--;
            else {
                st = 7;
                d = (short) Math.round(p);
                h[j] = (char) d;
                p = 0;
                j++;
            }
        }
        for (i = 0; i < s.length() / 2; i++){
            System.out.print(h[i]);
        }
 
    }
}

Теперь переводит строку в последовательность 0,1 без затыков.
Проверяйте.
1
0 / 0 / 0
Регистрация: 30.03.2016
Сообщений: 13
18.05.2017, 14:59  [ТС]
Не выдает ошибок, но при выводе в консоле почему то не отображаемые символы, использую NetBeans
0
164 / 170 / 139
Регистрация: 28.11.2016
Сообщений: 301
18.05.2017, 15:03
Цитата Сообщение от Иван123456 Посмотреть сообщение
Не выдает ошибок, но при выводе в консоле почему то не отображаемые символы, использую NetBeans
Я не разбирался что у Вас там за алгоритм кодировки, судя по тому что Вы используете математические функции, это некая формула. И естественно в результате получаются байты данных, которые не будут отображаться как обычные символы.
Если Вы хотите их отображать в Binary или Hex формате надо преобразовать двоичные данные в ASCII символы 0/1 или hex.
1
0 / 0 / 0
Регистрация: 30.03.2016
Сообщений: 13
18.05.2017, 15:20  [ТС]
Суть в том что вводилась строка текста любого, потом выводилась его так сказать 16 ричная версия, и вот эта программа делала все обратно, это нужно для удобства шифрования данных с помощью разнообразных старых алгоритмов так как они не использовали русский, а в качестве примера привести надо.
0
164 / 170 / 139
Регистрация: 28.11.2016
Сообщений: 301
18.05.2017, 16:00
Предлагаю поработать с отладчиком, в нем все хорошо видно.
Если не получится, выкладывайте алгоритм, исходные и выходные данные. можно на почту temp20170516@mail.ru
Почта временная, но пару недель продержится
PS: плюсовать каждый пост не нужно, один на тему достаточно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.05.2017, 16:00
Помогаю со студенческими работами здесь

Нужно код из Паскаля, переделать под Делфи
Помогите, нужно код Паскаля сделать под Делфи 7. Это метод Гаусса, если что. program abc; var n,i,j,l:integer; t:real; x:array...

Переделать под с Паскаля в Делфи
{$DEFINE DEBUG} program p0524; {$APPTYPE CONSOLE} uses SysUtils; const W = 4; // количество символов для...

Переделать программу из турбо паскаля под АВС
Uses crt, graph; var d,m,i:integer; x,y,a,rx,ry,color:integer; begin initgraph(d,m,''); randomize; ...

Переделать код из Паскаля в С++
program Param40; type St=String; var S:St; i,K:integer; Function WordK(S:St;K:integer):String; var

Переделать код из Паскаля в С++
Type mas = Array of Real; {--------------} Procedure Sort(var a: mas; n: Byte); var i,j: Byte; tmp: Real; begin For...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru