Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 23.12.2015, 18:23   #1 (permalink)
blazelott
Member
 
Регистрация: 03.02.2013
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Перевод с Си на Java

Есть задача.
Олимпиадная задача
Квадрат разбит на 4k одинаковых квадратных клеток.
Квадрат перегибается поочередно относительно вертикальной (правая половина накладывается на левую)
и горизонтальной (нижняя половина подкладывается под верхнюю) оси симметрии до тех пор,
пока все клетки не будут расположены одна под другой.
Занумеровать клетки исходного квадрата таким образом,
чтобы после выполнения перегибов номера клеток в полученном столбике
шли по возрастанию сверху вниз от 1 до 4k . Нумерация вручную не пройдет!

Интерфейс программы:
входные данные:
k – показатель степени (от единицы до десяти),
выходные данные:
вид квадрата с номерами клеток.
Пример
Вход
k=1
Выход – квадрат с четырьмя клетками:
4 3
1 2

Есть её код на Си, прошу перевести его на java. Я на Си никогда не прогал, треть кода не понимаю.
Код:
 #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");   }   }
blazelott вне форума   Ответить с цитированием

Старый 23.12.2015, 18:23
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Эти посты имеют сходства с вашей темой

Какие языки были до Java? Точнее был же java или в точности java-подобный язык?
Перевод с Паскаля на СИ
Перевод страниц в Опера

Старый 23.12.2015, 18:26   #2 (permalink)
blazelott
Member
 
Регистрация: 03.02.2013
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Извиняюсь, криво вставил.
Код:
#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");   } }
P.S. А кнопки правки нету?
blazelott вне форума   Ответить с цитированием
Старый 23.12.2015, 18:33   #3 (permalink)
blazelott
Member
 
Регистрация: 03.02.2013
Сообщений: 18
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Еще раз извините, но код почему то портиться. Пришлост в ручную.
Код:
#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");   
  } 
}
blazelott вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 05:28.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.