Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Матрица JS запись и чтение из матрицы (https://javascript.ru/forum/misc/28022-matrica-js-zapis-i-chtenie-iz-matricy.html)

greg_zel 03.05.2012 22:17

Матрица JS запись и чтение из матрицы
 
Суть такова, разбиваю вводимый (64-байтный) текст на 8 блоков, записываю в определенной последовательности эти блоки(по столбцам) в матрицу, затем считываю из нее по определенной последовательности, но уже по строкам.

<html>
<head>
<title>Перестановка 8 на 8</title> 
</head>
<body> <br>
<script language="JavaScript">
function polib() {
var a=new Array ( //Создание матрицы 8*8
  new Array ('','','','','','','',''), 
  new Array ('','','','','','','',''),
  new Array ('','','','','','','',''),
  new Array ('','','','','','','',''),
  new Array ('','','','','','','',''),
  new Array ('','','','','','','',''),
  new Array ('','','','','','','',''),
  new Array ('','','','','','','','')
 );
var f ="";
var simv="";
var str=0;
var stol=0;
var p=0;
var h=0;
var stol1="";
var stol2="";
var stol3="";
var stol4="";
var stol5="";
var stol6="";
var stol7="";
var stol8="";
var y=1;
var m=new String();
var n=new String();
var vvod = b_text1.value;
var vk =b_text1.value.toUpperCase();

/*for(i = 0; i < vvod.length; i++) 
{
	 simv=vk.charAt(i);
	 stol1=vk.substring(0,7);
	 
}*/
stol1=vk.substring(0,7);	//Разбиение строки на 8 частей
stol2=vk.substring(8,15);
stol3=vk.substring(16,23);
stol4=vk.substring(24,31);
stol5=vk.substring(32,39);
stol6=vk.substring(40,47);
stol7=vk.substring(48,55);
stol8=vk.substring(56,63);
p=0;
for (i=0; i<8; i++)	// запись по ключу: 6 4 2 1 3 5 7 8
{
simv=stol1.charAt(i);
a[p][6]=simv;
p+=1;
}
p=0;
for (i=8; i<16; i++)
{
simv=stol2.charAt(i);
a[p][4]=simv;
p+=1;
}
p=0;
for (i=16; i<24; i++)
{
simv=stol3.charAt(i);
a[p][2]=simv;
p+=1;
}
p=0;
for (i=24; i<32; i++)
{
simv=stol4.charAt(i);
a[p][1]=simv;
p+=1;
}
p=0;
for (i=32; i<40; i++)
{
simv=stol5.charAt(i);
a[p][3]=simv;
p+=1;
}
p=0;
for (i=40; i<48; i++)
{
simv=stol6.charAt(i);
a[p][5]=simv;
p+=1;
}
p=0;
for (i=48; i<56; i++)
{
simv=stol7.charAt(i);
a[p][7]=simv;
p+=1;
}
p=0;
for (i=56; i<64; i++)
{
simv=stol8.charAt(i);
a[p][8]=simv;
p+=1;
}

for (i=0; i<8; i++) f=f+a[8][i];	//считывание по ключу: 8 1 5 4 6 2 7 3
for (i=0; i<8; i++) f=f+a[1][i];
for (i=0; i<8; i++) f=f+a[5][i];
for (i=0; i<8; i++) f=f+a[4][i];
for (i=0; i<8; i++) f=f+a[6][i];
for (i=0; i<8; i++) f=f+a[2][i];
for (i=0; i<8; i++) f=f+a[7][i];
for (i=0; i<8; i++) f=f+a[3][i];


b_text2.value = f; }
</script>

<div align="center">
<b>Введите сюда Ваш текст:</b>
<br><br>
<input id="b_text1" type="text" size="80">
<br><br><br>
<b>Выберите действие:</b>
<br><br>

<input onclick="polib()" type="button" value="Дешифровать"><br>

<b>Результат:</b> <br><br>
<input id="b_text2" type="text" size="80"> </div>
</html>

9xakep 03.05.2012 22:53

Поставь весь html над js, иначе для него строка:
var vvod = b_text1.value; undefined. Да и странно вы как-то вы ищете элементы, если по id, то ищите так:
var vvod = document.getElementById('b_text1').value

greg_zel 03.05.2012 23:04

это не суть важно где стоит в данном случае, аналогичная структура работает))
меня больше интересует, запись и чтение матрицы правильно я сделал?

9xakep 03.05.2012 23:07

greg_zel,
вставь тест и посмотри)
Цитата:

Сообщение от грег зел
это не суть важно где стоит в данном случае, аналогичная структура работает))

странно...
<input type='text' id='text' value='asd'>
<script>
alert(document.getElementById('text').value)
</script>

<script>
alert(document.getElementById('text').value)
</script>
<input type='text' id='text' value='asd'>

person 04.05.2012 06:15

А может тут лучше один двухмерник вместо этой каши из одномерников?

greg_zel 04.05.2012 11:33

как сделать двухмерник?
как обращаться к элементам матрицы также, a[i][j]?

9xakep 04.05.2012 11:40

greg_zel,
да,
var array = [
[1,2,3],
[4,5,6]
]
alert(array[0][0])

greg_zel 04.05.2012 12:54

как мне создать ПУСТУЮ матрицу двумерную 8*8, затем записывать в нее?

9xakep 04.05.2012 14:00

greg_zel,
ну так и делайте:
var m = [
['','','','','','','',''],
['','','','','','','',''],
['','','','','','','',''],
['','','','','','','',''],
['','','','','','','',''],
['','','','','','','',''],
['','','','','','','',''],
['','','','','','','','']
]
m[7][7] = 'я последний элемент'
alert(m)

9xakep 04.05.2012 19:55

Ну а если по короче, то так:
function matrix(a,b) {
var arr = []
for(i=0;i<a;i++) arr[i] = []
for(i=0,k=0;i<b;k++,i++) arr[i][k] = '' 
return arr
}
var m = matrix(8,8)
alert(m[7][7])


Часовой пояс GMT +3, время: 10:01.