Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 03.02.2011, 19:48   #1
X@OC
Форумчанин
 
Аватар для X@OC
 
Регистрация: 18.06.2010
Сообщений: 273
По умолчанию Забивание матрицы

Доброго времени суток

тут возникла проблема
дается квадратная матрица NxN, допустим 3х3
и его нужно забить случайным образом 0-2
что бы матрица имела не болиее 3-х едениц, двоек и нулей

вид:
0 0 1
2 0 1
2 1 2

есть набросок что сдесь не так
Цитата:
int [][] pi = new int[3][3];
int k=3;
int[] _ = new int[k];
for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
{
t=ran.forInt(0, k-1); // генирация случайного числа (отдельный класс)
for(int f=0; f<_.length-1; f++)
{
if(t == f && _[f] !=_.length) // выходит что если случайное число равно моему в условии и его ище не 3 то я его дабавляю и прерывания цикла
{pi[i][j]=f; _[f]++; break;}
}
}
//вывод матрицы
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++)
{
System.out.print(pi[i][j]+"\t");
}
System.out.println();
}
вот что пулучаю в итоге
0 0 0
1 1 0
1 0 0
или
0 1 1
2 1 0
2 0 0


Последний раз редактировалось X@OC; 03.02.2011 в 19:59.
X@OC вне форума
Старый 04.02.2011, 20:47   #2
X@OC
Форумчанин
 
Аватар для X@OC
 
Регистрация: 18.06.2010
Сообщений: 273
По умолчанию

Все с массивом разобрался.

Продолжение вопроса делаю куб для которого нужна была матрица.

Как сделать чтобы мой куб не создавался заново при нажание на клавишы.
Цитата:
class WinPanel extends JPanel
{
int obl_x=48;
int obl_y=48;
int k = 0;
public static String[][] cubeRan(String[][] c, int l)
{
Ranfor ran = new Ranfor();
int q1=0,q2=0,q3=0,q4=0; //кординаты
String[] color = new String[5]; //массив цветов
String t=null;

color[0]="#0000ff"; //синий
color[1]="#009900"; //зеленый
color[2]="#cccc33"; //жолтый
color[3]="#cc3333"; //красный
color[4]="#3399cc"; //голубой

//поседовательное заполнение цветов
for(int i=0; i<l; i++)
for(int j=0; j<l; j++)
c[i][j]=color[i];
//перемешанный массив
for(int i=0; i<=l*5; i++)
{
q1=ran.forInt(0, l-1); q2=ran.forInt(0, l-1);
q3=ran.forInt(0, l-1); q4=ran.forInt(0, l-1);
t=c[q1][q2];
c[q1][q2]=c[q3][q4];
c[q3][q4]=t;
}

return c;
}

public WinPanel()
{
WinKey listener = new WinKey();
addKeyListener(listener);
setFocusable(true);
}
public void paintComponent(Graphics g)
{
super.paintComponents(g);
int x=0,y=0,l=5;
String[][] c = new String[l][l];
c = cubeRan(c,l);
switch(k)
{
case 37: if(obl_x==48) obl_x=48; else obl_x-=54; break;
case 39: if(obl_x==48+(54*(l-1))) obl_x=48+(54*(l-1)); else obl_x+=54; break;
case 38: if(obl_y==48) obl_y=48; else obl_y-=54; break;
case 40: if(obl_y==48+(54*(l-1))) obl_y=48+(54*(l-1)); else obl_y+=54; break;
}


for(int i=0; i<l; i++)
{
for(int j=0; j<l; j++)
{
g.setColor(Color.decode(c[i][j]));
g.fillRoundRect(50+y, 50+x, 50, 50, 20, 20); y+=54;
}
x+=54; y=0;
}
g.setColor(Color.WHITE);
g.drawRect(obl_x-54, obl_y, 53, 53);
g.drawRect(obl_x+54, obl_y, 53, 53);
g.drawRect(obl_x, obl_y-54, 53, 53);
g.drawRect(obl_x, obl_y+54, 53, 53);
g.setColor(Color.BLACK);
g.drawRect(obl_x, obl_y, 53, 53);
}

private class WinKey implements KeyListener
{
public void keyPressed(KeyEvent e) {
k=e.getKeyCode(); repaint();
}

public void keyReleased(KeyEvent e) {
}

public void keyTyped(KeyEvent e) {
System.out.println("Typed = "+e.getKeyChar());
}
}
}
X@OC вне форума
Старый 04.02.2011, 23:11   #3
X@OC
Форумчанин
 
Аватар для X@OC
 
Регистрация: 18.06.2010
Сообщений: 273
По умолчанию

Все разобрался
тема закрыта
X@OC вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TurboPascal: графы, матрицы смежности и матрицы инцидентности. ulala Помощь студентам 1 03.03.2011 19:28
Ф-ия, определяющая сумму строк матрицы, если на главной диагонали матрицы имеется отрицательный эл-т. Volk_xD Помощь студентам 6 05.01.2011 13:39
Матрицы:функция изменения порядка столбцов матрицы Fajyz Помощь студентам 0 13.01.2010 09:40
На главную диагональ матрицы поместить наибольшие элементы этой матрицы mivel Помощь студентам 2 23.12.2009 21:19