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

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

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2008, 08:31   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Помогите по JavaScript

Вот код перевода чисел из одной системы счисления в другую. Помогите переделать его, чтбы он переводил только из 16тиричной в 2ичную:
PHP код:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd">
<
html>
<
head>
    <
title>1-ое задание</title>
</
head>
<
body>
    <
script type="text/javascript" language="JavaScript">
    
//Инициализация массива аргументов
function initArray() {
    
this.length initArray.arguments.length;
    for (var 
0this.lengthi++)
        
this[i] = initArray.arguments[i];
}

function 
from10toradix(value,radix){
    var 
retval '';
    var 
ConvArray = new initArray(0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F');
    var 
intnum;
    var 
tmpnum;
    var 
0;

    
intnum parseInt(value,10);
    if (
isNaN(intnum)){
        
retval 'NaN';
    }else{
        while (
intnum 0.9){
            
i++;
            
tmpnum intnum;
            
// связь возвращаемой строки с новым значением:
            
retval ConvArray[tmpnum radix] + retval;
            
intnum Math.floor(tmpnum radix);
            if (
100){
                
// стоп
                
retval 'NaN';
                break;
            }
        }
    }
    return 
retval;
}

//Очищение 
function resetform(cform) {
    
cform.result.value="";
    
cform.expr.value="";
}

/* Пока не будет выбрана какая-то радиокнопка процедура не будет выполнена.*/

function compute(cform) {
    var 
tmpvar;
      if (
cform.cotype[0].checked){
        
// d2h  Перевод из десятичной в шестнадцатиричную
          
cform.result.value " " +  from10toradix(cform.expr.value,16);
     }else if (
cform.cotype[5].checked){
        
// h2d  Перевод из шестнадцатиричной в десятичную
          
cform.result.value " " parseInt(cform.expr.value,16);
     }else if (
cform.cotype[1].checked){
        
// d2b Перевод из десятичной в двоичную
          
cform.result.value " " from10toradix(cform.expr.value,2);
     }else if (
cform.cotype[2].checked){
         
// b2d Перевод из двоичной в десятиричную
          
cform.result.value " " parseInt(cform.expr.value,2);
     }else if (
cform.cotype[3].checked){
        
// b2h Перевод из двоичной в шестнадцатиричную
          
tmpvar parseInt(cform.expr.value,2);
        if (
isNaN(tmpvar)){
            
cform.result.value '';
        }else{
            
cform.result.value " " from10toradix(tmpvar,16);
        }
     }else if (
cform.cotype[4].checked){
        
// h2b Перевод из шестнадцатиричной в двоичную. 
         //Именно эту процедуру мне и надо оставить. Только из 16ой в 2ую. Остальные мне не надо по условию.  
          
tmpvar parseInt(cform.expr.value,16);
         if (
isNaN(tmpvar)){
             
cform.result.value '';
         }else{
              
cform.result.value " " from10toradix(tmpvar,2);
         }
    }else{
        
alert("ERROR: No such conversion type");
    }
}
</script>

<form action="">
Vvedite chislo: <input type="text" name="expr" size="100"> &nbsp; &nbsp;<br>
/*Это сами радио кнопки. Их нужно все убрать. Нужно как то сделать, чтобы не надо было ничего выбирать, а по нажатию кнопки
сразу происходила процедура перевода чисел.*/        
        <table>
         
                 <tr>
                        <td><input type="radio" name="cotype" value="d2h"> dec to hex (10 в 16)</td>
                </tr>
                <tr>
                        <td><input type="radio" name="cotype" value="d2b" checked="checked"> dec to bin (10 в 2)</td>
                </tr>
                <tr>
                <td><input type="radio" name="cotype" value="b2d"> bin to dec (2 в 10)</td>
                </tr>
                <tr>
                        <td><input type="radio" name="cotype" value="b2h"> bin to hex (2 в 16)</td>
                </tr>
                <tr>
                        <td><input type="radio" name="cotype" value="h2b"> hex to bin (16 в 2)</td>
                </tr>
                <tr>
                        <td><input type="radio" name="cotype" value="h2d"> hex to dec (16 в 10)</td>
                </tr>
        </table>
        
<br>

Otvet: <input type="text" name="result" size="100">&nbsp; &nbsp;<input type="button" value="Perevesti" onclick="compute(this.form);">
</form>
</body>
</html> 
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 20.11.2008, 10:14   #2
Doda
Пользователь
 
Регистрация: 21.11.2007
Сообщений: 64
По умолчанию

Код HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>1-ое задание</title>
</head>
<body>
    <script type="text/javascript" language="JavaScript">
    
//Инициализация массива аргументов
function initArray() {
    this.length = initArray.arguments.length;
    for (var i = 0; i < this.length; i++)
        this[i] = initArray.arguments[i];
}

function from10toradix(value,radix){
    var retval = '';
    var ConvArray = new initArray(0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F');
    var intnum;
    var tmpnum;
    var i = 0;

    intnum = parseInt(value,10);
    if (isNaN(intnum)){
        retval = 'NaN';
    }else{
        while (intnum > 0.9){
            i++;
            tmpnum = intnum;
            // связь возвращаемой строки с новым значением:
            retval = ConvArray[tmpnum % radix] + retval;
            intnum = Math.floor(tmpnum / radix);
            if (i > 100){
                // стоп
                retval = 'NaN';
                break;
            }
        }
    }
    return retval;
}

//Очищение 
function resetform(cform) {
    cform.result.value="";
    cform.expr.value="";
}

/* Пока не будет выбрана какая-то радиокнопка процедура не будет выполнена.*/

function compute(cform) {
    var tmpvar;
      
        // h2b Перевод из шестнадцатиричной в двоичную. 
         //Именно эту процедуру мне и надо оставить. Только из 16ой в 2ую. Остальные мне не надо по условию.  
          tmpvar = parseInt(cform.expr.value,16);
         if (isNaN(tmpvar)){
             cform.result.value = '';
         }else{
              cform.result.value = " " + from10toradix(tmpvar,2);
         }
    
}
</script>

<form action="">
Vvedite chislo: <input type="text" name="expr" size="100"> &nbsp; &nbsp;<br>
<!--Это сами радио кнопки. Их нужно все убрать. Нужно как то сделать, чтобы не надо было ничего выбирать, а по нажатию кнопки
сразу происходила процедура перевода чисел.-->        

        
<br>

Otvet: <input type="text" name="result" size="100">&nbsp; &nbsp;<input type="button" value="Perevesti" onclick="compute(this.form);">
</form>
</body>
</html>
Doda вне форума Ответить с цитированием
Старый 20.11.2008, 10:57   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Спасибо, Doda)). Помог ты мне)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите перевести JavaScript в блок-схему DJ Socol JavaScript, Ajax 1 12.12.2007 22:59
Трассировщик JavaScript kuguar JavaScript, Ajax 5 23.11.2007 17:17
помогите автоматизировать тест в нтмl при помощи javascript dimitriy1987 JavaScript, Ajax 23 07.11.2007 15:53