Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: JavaScript: перевод числа из десятичной в двоичную систему счисления
 
 автор: даша   (09.04.2011 в 11:42)   письмо автору
 
 

перевод числа из десятичной в двоичную систему счисления...

  Ответить  
 
 автор: cheops   (09.04.2011 в 15:23)   письмо автору
 
   для: даша   (09.04.2011 в 11:42)
 

Можно поступить следующим образом
<script type="text/javascript">
  function translate()
  {
    var dec = document.getElementById('dec').value;
    var bin = "";
    do 
    { 
      if(dec & 1) bin += '1'; 
      else bin += '0'; 
      dec = dec >> 1;
    } while(dec); 
    document.getElementById('bin').innerHTML = bin;
  }
</script>
<div><input id="dec" type="text" onkeyup="translate()" 
name="dec" size="5" value=""> = <span id='bin'><span></div>

  Ответить  
 
 автор: даша   (09.04.2011 в 16:36)   письмо автору
 
   для: cheops   (09.04.2011 в 15:23)
 

а если тебе нужно записать перевести число с 0 до n не вводя его и вывести как массив...
подскажите пожалуйста как будет)))

  Ответить  
 
 автор: cheops   (09.04.2011 в 16:50)   письмо автору
 
   для: даша   (09.04.2011 в 16:36)
 

Можно отталкиваться от следующего скрипта
<script type="text/javascript"> 
  function dec2bin(dec) 
  { 
    var bin = ""; 
    do  
    {  
      if(dec & 1) bin += '1';  
      else bin += '0';  
      dec = dec >> 1; 
    } while(dec);  
    return bin; 
  }
  function translate()
  {
    var dec = document.getElementById('dec').value;
    var arr = new Array();
    for(var i = 0; i <= parseInt(dec); i++)
    {
      arr[i] = dec2bin(i);
    }
    document.getElementById('bin').innerHTML = arr;
  }
</script> 
<div><input id="dec" type="text" onkeyup="translate()"  
name="dec" size="5" value=""> = <span id='bin'><span></div>

  Ответить  
 
 автор: даша   (09.04.2011 в 17:56)   письмо автору
 
   для: cheops   (09.04.2011 в 16:50)
 

помогите еще раз пожалуйста, тут вместо нулей нужно вставить единицы))))
<html>
<body>
<script type="text/javascript">
function addTablicta(){
var n = document.form1.peremen.value;
var table = document.getElementById('tablicta');
var tr = document.createElement('TR');
table.appendChild(tr);
s = "";
for(i=1;i<=n;i++) {
th = document.createElement('TH');
txt1 = document.createTextNode("x");
sub = document.createElement('SUB');
txt2 = document.createTextNode(i);
tr.appendChild(th);
th.appendChild(txt1);
sub.appendChild(txt2);
th.appendChild(sub);
s = s + "x<sub>"+i+"</sub>,";
}
th = document.createElement('TH');

tr.appendChild(th);
th.innerHTML = "f("+s+")";

for(j=0;j<Math.pow(2,n);j++)
{
var tr = document.createElement('TR');
table.appendChild(tr);
for(i=1;i<=n;i++) {
td = document.createElement('TD');
txt = document.createTextNode("0");// мне нужно вставить место нулей 0 и 1(двоичное кодирование), таблица истинности
tr.appendChild(td);
td.appendChild(txt);
}
td = document.createElement('TD');
inp = document.createElement('INPUT');
inp.setAttribute ("name","a["+j+"]");
tr.appendChild(td);
td.appendChild(inp);
}
}
</script>

<form name="form1">

<input type="text" name="peremen" size=5>
<input type="button" value="Таблица" onClick="addTablicta()">
<table cellspacing="10" border="1">
<tbody id="tablicta">

</tbody>
</table>
</form>
</body>
</html>

  Ответить  
 
 автор: cheops   (11.04.2011 в 14:04)   письмо автору
 
   для: даша   (09.04.2011 в 17:56)
 

Если честно, не очень понятно, откуда поступает десятичное число и как оно вычисляется? Можно использовать просто индекс массива? Или нужна какая-то другая логика вычисления значения?
<html>
<body>
<script type="text/javascript">
  function dec2bin(dec)  
  {  
    var bin = "";  
    do   
    {   
      if(dec & 1) bin += '1';   
      else bin += '0';   
      dec = dec >> 1;  
    } while(dec);   
    return bin;  
  }
  function addTablicta(){
  var n = document.form1.peremen.value;
  var table = document.getElementById('tablicta');
  var tr = document.createElement('TR');
  table.appendChild(tr);
  s = "";
  for(i=1;i<=n;i++) {
    th = document.createElement('TH');
    txt1 = document.createTextNode("x");
    sub = document.createElement('SUB');
    txt2 = document.createTextNode(i); 
    tr.appendChild(th);
    th.appendChild(txt1);
    sub.appendChild(txt2);
    th.appendChild(sub);
    s = s + "x<sub>"+i+"</sub>,";
  }
  th = document.createElement('TH');

  tr.appendChild(th);
  th.innerHTML = "f("+s+")";

  for(j=0;j<Math.pow(2,n);j++)
  {
    var tr = document.createElement('TR');
    table.appendChild(tr);
    for(i=1;i<=n;i++) {
      td = document.createElement('TD');
      txt = document.createTextNode(dec2bin(i));
      tr.appendChild(td);
      td.appendChild(txt);
    }
    td = document.createElement('TD');
    inp = document.createElement('INPUT');
    inp.setAttribute ("name","a["+j+"]");
    tr.appendChild(td);
    td.appendChild(inp);
  }
}
</script> 

<form name="form1">

<input type="text" name="peremen" size=5>
<input type="button" value="Таблица" onClick="addTablicta()">
<table cellspacing="10" border="1">
<tbody id="tablicta">

</tbody>
</table>
</form>
</body>
</html>

  Ответить  
 
 автор: даша   (11.04.2011 в 14:42)   письмо автору
 
   для: cheops   (11.04.2011 в 14:04)
 

простите еще раз за волнение))))
мне нужно заполнить эту таблицу, чтоб получилась таблица истинности)
например, я ввожу 2.
таблица:
х1 х2
0 0
0 1
1 0
1 1
они в разных ячейках.
помогите пожалуйста))

  Ответить  
 
 автор: cheops   (11.04.2011 в 15:25)   письмо автору
 
   для: даша   (11.04.2011 в 14:42)
 

Если я все правильно понял, то следует поступить как-то так
<html> 
<body> 
<script type="text/javascript"> 
  function dec2bin(dec)   
  {   
    var bin = "";   
    do    
    {    
      if(dec & 1) bin += '1';    
      else bin += '0';    
      dec = dec >> 1;   
    } while(dec);    
    return bin;   
  } 
  function addTablicta(){ 
  var n = document.form1.peremen.value; 
  var table = document.getElementById('tablicta'); 
  var tr = document.createElement('TR'); 
  table.appendChild(tr); 
  s = ""; 
  for(i=1;i<=n;i++) { 
    th = document.createElement('TH'); 
    txt1 = document.createTextNode("x"); 
    sub = document.createElement('SUB'); 
    txt2 = document.createTextNode(i);  
    tr.appendChild(th); 
    th.appendChild(txt1); 
    sub.appendChild(txt2); 
    th.appendChild(sub); 
    s = s + "x<sub>"+i+"</sub>,"; 
  } 
  th = document.createElement('TH'); 

  tr.appendChild(th); 
  th.innerHTML = "f("+s+")"; 

  var bin = "";
  var binnum = 0;
  for(j=0;j<Math.pow(2,n);j++) 
  { 
    var tr = document.createElement('TR'); 
    table.appendChild(tr); 
    bin = dec2bin(j);
    for(i=1;i<=n;i++) { 
      td = document.createElement('TD'); 
      binnum = parseInt(bin[n - i]);
      if(isNaN(binnum)) binnum = 0;
      txt = document.createTextNode(binnum); 
      tr.appendChild(td); 
      td.appendChild(txt); 
    } 
    td = document.createElement('TD'); 
    inp = document.createElement('INPUT'); 
    inp.setAttribute ("name","a["+j+"]"); 
    tr.appendChild(td); 
    td.appendChild(inp); 
  } 

</script>  

<form name="form1"> 

<input type="text" name="peremen" size=5> 
<input type="button" value="Таблица" onClick="addTablicta()"> 
<table cellspacing="10" border="1"> 
<tbody id="tablicta"> 

</tbody> 
</table> 
</form> 
</body> 
</html>

  Ответить  
 
 автор: даша   (11.04.2011 в 15:36)   письмо автору
 
   для: cheops   (11.04.2011 в 15:25)
 

Спасибо, вам, огромное!!!)))) Вы так выручили меня:)

  Ответить  
 
 автор: даша   (18.04.2011 в 20:21)   письмо автору
 
   для: cheops   (11.04.2011 в 15:25)
 

Здравствуйте!!!) помогите мне пожалуйста еще раз???))))
Мне нужно, где мы переводили в двоичное число, записать это в виде массива, а не строки...

  Ответить  
 
 автор: cheops   (18.04.2011 в 20:52)   письмо автору
 
   для: даша   (18.04.2011 в 20:21)
 

Можно начать отталкиваться от следующего скрипта
<script type="text/javascript">  
  function dec2bin(dec)  
  {  
    var arr = new Array(); 
    var bin = new Array;
    var i = 0;
    var j = 0;
    do   
    {   
      if(dec & 1) arr[i++] = '1';   
      else arr[i++] = '0';   
      dec = dec >> 1;  
    } while(dec);
    for(i = arr.length - 1, j = 0; i >= 0; i--, j++)
    {
      bin[j] = arr[i];
    }
    return bin;  
  } 
  function translate() 
  { 
    var dec = document.getElementById('dec').value; 
    var arr = dec2bin(dec);
    alert(arr);
  } 
</script>  
<div><input id="dec" type="text" onkeyup="translate()"   
name="dec" size="5" value=""></div>

  Ответить  
 
 автор: даша   (19.04.2011 в 08:27)   письмо автору
 
   для: cheops   (18.04.2011 в 20:52)
 

спасибо))) а вот нужно мне как-то тогда связать с предыдущем кодом...???

  Ответить  
 
 автор: cheops   (19.04.2011 в 09:52)   письмо автору
 
   для: даша   (19.04.2011 в 08:27)
 

Помимо самой функции dec2bin(), нужно заменить строку
binnum = parseInt(bin[n - i]);
на
binnum = parseInt(bin[i]);

  Ответить  
 
 автор: даша   (22.04.2011 в 15:42)   письмо автору
 
   для: cheops   (19.04.2011 в 09:52)
 

Здравствуйте!)))) помогите мне пожалуйста еще разок)
мне вот нужно: допустим пользователь вводит число переменных ему выдается формула и таблица истинности, он должен по данной формуле заполнить ее, и нажав на кнопку "проверить", если неправильно ввел, то ячейка закрашивается в красный цвет, а правильно остается без изменения...
вот код.
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title></title>
</head>
<body>
<script type="text/javascript" language="javascript">

var res;
var res1;
var res2;
var res3;
var res4;

var operat;
var operat1;
var operat2;
var operat3;
res = new Array();
res[0] = "-x <sub>1</sub>";
res[1] = "x <sub>1</sub>";

res1 = new Array();
res1[0] = "-x <sub>2</sub>";
res1[1] = "x <sub>2</sub>";

res2 = new Array();
res2[0] = "-x <sub>3</sub>";
res2[1] = "x <sub>3</sub>";

res3 = new Array();
res3[0] = "-x <sub>4</sub>";
res3[1] = "x <sub>4</sub>";

res4 = new Array();
res4[0] = "-x <sub>5</sub>";
res4[1] = "x <sub>5</sub>";


opers = new Array();
opers[0] = "&";
opers[1] = "v";
opers[2] = "+";
opers[3] = "->";
opers[4] = "<->";

function formula()
{
var n = document.form1.peremen.value;
a=parseInt(Math.random()*2);
b=parseInt(Math.random()*2);
c=parseInt(Math.random()*2);
d=parseInt(Math.random()*2);
e=parseInt(Math.random()*2);
operat=parseInt(Math.random()*5);
operat1=parseInt(Math.random()*5);
operat2=parseInt(Math.random()*5);
operat3=parseInt(Math.random()*5);
if (n!=2 && n!=3 && n!=3 && n!=4 && n!=5)
{alert('Введите число от 2 до 5');
document.form1.peremen.value="";
}
else {
if (n==2)
{
document.getElementById("a").innerHTML = res[a];
document.getElementById("operat").innerHTML = opers[operat];
document.getElementById("b").innerHTML = res1[b];
document.getElementById("operat1").innerHTML ='';
document.getElementById("c").innerHTML = '';
document.getElementById("operat2").innerHTML = '';
document.getElementById("d").innerHTML ='';
document.getElementById("operat3").innerHTML ='';
document.getElementById("e").innerHTML = '';
}
if (n==3)
{
document.getElementById("a").innerHTML = res[a];
document.getElementById("operat").innerHTML = opers[operat];
document.getElementById("b").innerHTML = res1[b];
document.getElementById("operat1").innerHTML = opers[operat1];
document.getElementById("c").innerHTML = res2[c];
document.getElementById("operat2").innerHTML = '';
document.getElementById("d").innerHTML = '';
document.getElementById("operat3").innerHTML ='';
document.getElementById("e").innerHTML = '';
}
if (n==4)
{
document.getElementById("a").innerHTML = res[a];
document.getElementById("operat").innerHTML = opers[operat];
document.getElementById("b").innerHTML = res1[b];
document.getElementById("operat1").innerHTML = opers[operat1];
document.getElementById("c").innerHTML = res2[c];
document.getElementById("operat2").innerHTML = opers[operat2];
document.getElementById("d").innerHTML = res3[d];
document.getElementById("operat3").innerHTML = '';
document.getElementById("e").innerHTML = '';
}
if (n==5)
{
document.getElementById("a").innerHTML = res[a];
document.getElementById("operat").innerHTML = opers[operat];
document.getElementById("b").innerHTML = res1[b];
document.getElementById("operat1").innerHTML = opers[operat1];
document.getElementById("c").innerHTML = res2[c];
document.getElementById("operat2").innerHTML = opers[operat2];
document.getElementById("d").innerHTML = res3[d];
document.getElementById("operat3").innerHTML = opers[operat3];
document.getElementById("e").innerHTML = res4[e];
}

function operation(type,x,y)
{
switch(type){
case 0: return con(x,y);
case 1: return diz(x,y);
case 2: return imp(x,y);
case 3: return ekv(x,y);
case 4: return slg(x,y);
}
}

function con(x,y)
{
return x&&y;
}

function diz(x,y)
{
return x||y;
}

function imp(x,y)
{
if (x==1 && y==0)
return 0;
else
return 1;
}

function ekv(x,y)
{
return x===y;
}

function slg(x,y)
{
return x^y;
}

function perevod(dec)
{
var bin = "";
do
{
if (dec & 1) bin += '1';
else bin += '0';
dec = dec >> 1;
}
while(dec);
return bin;
}
var table = document.getElementById('tablicta');
while (table.childNodes.length >= 2)
{
oneChild = table.lastChild;
table.removeChild(oneChild)
}

var tr = document.createElement('TR');
table.appendChild(tr);
s = "";
for(i=1;i<=n;i++) {
th = document.createElement('TH');
txt1 = document.createTextNode("x");
sub = document.createElement('SUB');
txt2 = document.createTextNode(i);
tr.appendChild(th);
th.appendChild(txt1);
sub.appendChild(txt2);
th.appendChild(sub);
s = s + "x<sub>"+i+"</sub>,";
}

th = document.createElement('TH');
tr.appendChild(th);
th.innerHTML = "f("+s+")";

var numbin = 0;

for(j=0;j<Math.pow(2,n);j++)
{
var x = new Array();
var tr = document.createElement('TR');
table.appendChild(tr);

x = perevod(j);
for(i=1;i<=n;i++) {
td = document.createElement('TD');
numbin = parseInt(x[n-i]);
if(isNaN(numbin))
numbin = 0;
txt = document.createTextNode(numbin);
tr.appendChild(td);
td.appendChild(txt);
}
td = document.createElement('TD');
inp = document.createElement('INPUT');
inp.setAttribute ("name","a["+j+"]");
tr.appendChild(td);
td.appendChild(inp);
}}
}


function proverka(){
}

</script>
<form name="form1">
<p><b>Введите число переменных</b></p>
<input type="text" name="peremen" size=5>
<input type="button" value="Формула" onClick="formula()">
<table cellspacing="10">
<tr><td id="a"> </td>
<td id="operat"> </td>
<td id="b"> </td>
<td id="operat1"> </td>
<td id="c"> </td>
<td id="operat2"> </td>
<td id="d"> </td>
<td id="operat3"> </td>
<td id="e"> </td>
</tr>
</table>
<p><b>Для данной формулы постройте таблицу истинности </b></p>

<p><input type="button" value="Проверка" onClick="proverka()"></p>

<table cellspacing="10" border="1">
<tbody id="tablicta">
</tbody>
</table>


</form>
</body>
</html>

  Ответить  
 
 автор: cheops   (22.04.2011 в 16:01)   письмо автору
 
   для: даша   (22.04.2011 в 15:42)
 

А формула какая? Вот допустим вводим 4, что нужно вводить в строке со следующими значениями, чтобы проверка прошла успешно?
0    1    1    1
PS Такой объемный код наверное уже лучше прикреплять в виде файла.

  Ответить  
 
 автор: даша   (22.04.2011 в 17:03)   письмо автору
335.7 Кб
 
   для: cheops   (22.04.2011 в 16:01)
 

надеюсь я правильно выразила, что мне нужно:):):)

  Ответить  
 
 автор: cheops   (22.04.2011 в 17:53)   письмо автору
 
   для: даша   (22.04.2011 в 17:03)
 

Все-равно не понятна логика выражения х1 <-> х2, для неё генерируется форма вида
0 0 = ?
0 1 = ?
1 0 = ?
1 1 = ?
Что будет вместо знаков вопросов, т.е. аргументы должны совпадать или XOR должно вычислять? Просто заполните правильными ответами хотя таблицу для 2-х элементов (лучше, конечно, для 3-х).

  Ответить  
 
 автор: даша   (23.04.2011 в 06:33)   письмо автору
 
   для: cheops   (22.04.2011 в 17:53)
 

вместо знаков вопроса будут 1 или 0, и мы должны проверить правильно введено или нет, а формула генерируется случайным образом при нажатии кнопки, "&"-конъюнкция, "v"-дизъюнкция, "->"-импликация, "<->"-эквивалентность,"+"-сложение по модулю два, "-"-отрицание.

  Ответить  
 
 автор: даша   (25.04.2011 в 08:19)   письмо автору
 
   для: даша   (23.04.2011 в 06:33)
 

Извините, пожалуйста!)) а вы сможете сделать, а то оч срочно надо....

  Ответить  
 
 автор: cheops   (25.04.2011 в 13:15)   письмо автору
 
   для: даша   (25.04.2011 в 08:19)
 

Если будет время обязательно доделаю (уж больно задача объемная получается).

  Ответить  
 
 автор: даша   (25.04.2011 в 13:51)   письмо автору
 
   для: cheops   (25.04.2011 в 13:15)
 

ой, хорошо было бы попыстрее:)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования