Ошибка в алгоритме перевода из десятичной в 2, 8, 16 систему счисления
Помогите найти ошибку в алгоритме перевода из 10 в 2, 8, 16 системы счисления :-?
function translate1() {
var chislo = document.getElementById('chislo').value; // присвоение данных переменной
var vhod = document.getElementById('vhod').value;
var vihod = document.getElementById('vihod').value;
var result = "", r;
if (vihod == 2 || vihod == 8 || vihod == 16) {
if (vhod == 10) {
while (chislo > 0) {
r = chislo % vihod; // остаток от деления, % - оператор возвращает значение остатка при делении первого операнда на второй
if (r == 10) { r = "A"; }
if (r == 11) { r = "B"; }
if (r == 12) { r = "C"; }
if (r == 13) { r = "D"; }
if (r == 14) { r = "E"; }
if (r == 15) { r = "F"; }
chislo = Math.floor(chislo); // возвращает наибольшее целое, меньшее или равное аргументу
chislo = chislo / vihod;
result = r + result;
}
alert('Ваш результат - ' +result, '');
}
}
|
helloterry8,
result = 0 Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [js] ... ваш код... [/js] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
Цитата:
|
Цитата:
|
helloterry8,
и 5 строка неисправлена |
helloterry8,
var string = '0123456789ABCDEF';
var result = '';
while (chislo) {
result = string[chislo % vihod] + result;
chislo = Math.floor(chislo / vihod);
}
обратно:
var string = '0123456789ABCDEF';
var result = 0;
var index = chislo.length;
while (index) {
result += Math.pow(vhod, chislo.length - index--) * string.indexOf(chislo[index]);
}
|
|
Спасибо большое!
|
| Часовой пояс GMT +3, время: 15:51. |