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

Перевод с Си на Java

22.12.2015, 09:27. Показов 2396. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста перевести программу с Си на Java.
C
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
#include <stdio.h>
#include <math.h>
 
int last[1024][1024];
 
bend (int size) {
  int i, j;
  int width= last[0][0] / (size*size*4);
  for (i= 0; i < size; i++) for (j= 0; j < size; j++) {
    int fl= (i+j) % 2 * 2 - 1; // 1 or -1
    last[2*size-i-1][j]= last[i][j] + fl*(width * 4 - 1);
    last[i][2*size-j-1]= last[i][j] + fl*(width * 2 -1);
    last[2*size-i-1][2*size-j-1]= last[i][j] + fl*(width * 2 );
  }
}
 
main() {
  int k, i, j, size;
  scanf ("%d", &k);
  last[0][0]= powl (4, k);
  for (size= 1; size < powl (2,k); size*= 2) bend (size);
  for (i=0; i < size; i++) {
    for (j= 0; j < size; j++) printf ("%d\t", last[i][j]);
    printf ("\n");
  }
 
}
Добавлено через 1 час 46 минут
Перевел, но не правильно Выскакивает ошибка.
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException : 2047
at oli9.Oli9.main(Oli9.java:30)
Java Result: 1
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
int n = 1024;
        int last[][] = new int[n][n];
 
        int width = last[0][0] / (n * n * 4);
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                int fl = (i + j) / 2 * 2 - 1;
                last[2 * n - i - 1][j] = last[i][j] + fl * (width * 4 - 1);
                last[i][2 * n - j - 1] = last[i][j] + fl * (width * 2 - 1);
                last[2 * n - i - 1][2 * n - j - 1] = last[i][j] + fl * (width * 2);
            }
        }
        int k, i, j, size;
        Scanner sc = new Scanner(System.in);
        System.out.print("Введите целое число k:");
        k = sc.nextInt();
 
        last[0][0] = (int) Math.pow(4, k);
        for (size = 1; size < Math.pow(2, k); n *= 2) {
            for (i = 0; i < size; i++) {
                for (j = 0; j < size; j++) {
                    System.out.println(last[i][j]);
 
                }
            }
        }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.12.2015, 09:27
Ответы с готовыми решениями:

Перевод код Pascal на Java
Срочно. var st:string; i:byte; function Raz(p:char;m:byte):char; var G,j:byte; begin if p in then G:=ord(p)-48 else...

Перевод кода с Pascal на Java - Java SE
var a:Int64; begin Reset(Input,'input.txt'); Rewrite(Output,'output.txt'); read(a); Write(a,9,9-a) end. Заранее...

Перевод код С++ на Java - Java SE
#include &lt;fstream&gt; using namespace std; ifstream cin (&quot;input.txt&quot;); ofstream cout (&quot;output.txt&quot;); int main() { int...

7
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
22.12.2015, 09:34
Цитата Сообщение от Ashlott Посмотреть сообщение
Java
1
for (size = 1; size < Math.pow(2, k); n *= 2) {
может все-таки
Java
1
size *= 2
Добавлено через 2 минуты
Тридцатую строчку покажите.
0
0 / 0 / 0
Регистрация: 08.10.2012
Сообщений: 50
22.12.2015, 09:52  [ТС]
Спасибо но до туда программа не доходит.
Ошибка выскакивает на этой строке.
Java
1
last[2 * n - i - 1][j] = last[i][j] + fl * (width * 4 - 1);
0
53 / 53 / 39
Регистрация: 05.12.2010
Сообщений: 261
22.12.2015, 09:59
Цитата Сообщение от Ashlott Посмотреть сообщение
Ошибка выскакивает на этой строке.
у вас выход за границы массива. код на с++ работает правильно, или вы не тестили?

ну да - в с++ вы переменную fl берете как остаток от деления, а в java - именно результат деления.
0
0 / 0 / 0
Регистрация: 08.10.2012
Сообщений: 50
22.12.2015, 10:03  [ТС]
Не тестил, но на Си должен работать. Он взят из этой темы. Олимпиадная задача. Занумеровать клетки исходного квадрата по правилу
0
53 / 53 / 39
Регистрация: 05.12.2010
Сообщений: 261
22.12.2015, 10:06
Цитата Сообщение от Ashlott Посмотреть сообщение
Java
1
last[2 * n - i - 1][j] = last[i][j] + fl * (width * 4 - 1);
у вас размер массива 1024х1024. n = 1024, i < 1024. У вас в 2 * n - i - 1 число, которое больше 1024, а так как массив 1024х1024, то у вас явный выход за границы. Это как минимум. первая строка, где ошибка.
Помимо всего, у вас не заполнена значениями сама матрица - с ней не могут производиться вычисления.
0
0 / 0 / 0
Регистрация: 08.10.2012
Сообщений: 50
22.12.2015, 10:21  [ТС]
Как мне тогда это реализовать? Я не знаю что такое bend в Си, и откуда берется size. Я предположил что это размер 1024. Но почему тогда на Си выхода за границу нет?
0
53 / 53 / 39
Регистрация: 05.12.2010
Сообщений: 261
22.12.2015, 11:01
Цитата Сообщение от Ashlott Посмотреть сообщение
Но почему тогда на Си выхода за границу нет?
а с чего вы взяли, что там не выходит? может автор того кода даже не тестил его, а сразу писал без компилятора.

попробуйте, может быть, двойку перед n убрать?

читайте ошибки, это бывает полезно:

Цитата Сообщение от Ashlott Посмотреть сообщение
java.lang.ArrayIndexOutOfBoundsException : 2047
сразу видно, что обращение к 2047 элементу по ряду, в то время, как у вас размер 1-й стороны только 1024.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.12.2015, 11:01
Помогаю со студенческими работами здесь

Перевод в Java
Прошу помочь перевести в Java #include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;windows.h&gt; using namespace std; int main(){ ...

Перевод из C# в Java
Помогите перевести в Java public static void FareiSequence(int n) { Console.WriteLine(&quot;{0} / {1}&quot;, 0, 1); ...

Перевод из С++ В Java
Кто может переделать калькулятор в Java?

Перевод из C++ в Java
int main(){ setlocale(LC_ALL,&quot;Rus&quot;); string str1, str2; cout &lt;&lt; &quot;Введите первую строку: &quot;; getline(cin,...

Перевод с С++ на Java
Подскажите что не так. Питаюсь перевести програму с паскаля на джава, но выдает ошибку &quot;Syntax error on token&quot; на командах ввода...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru