Назад | Содержание | Вперед |
В языке JavaScript определены стандартные функции, при работе с которыми не требуется создавать никакого объекта. Функции осуществляют анализ своих аргументов.
Функция Number (s) преобразует строковый параметр s в число. Эту функцию уже неоднократно использовали в предыдущих сценариях. Функция string (n) преобразует число п в строку.
Напишем сценарий, в результате работы которого определяется, является ли введенное число автоморфным числом. Напомним, что натуральное число называется автоморфным, если оно содержится в качестве младших цифр в своем квадрате. Например, число 25 является автоморфным, т. к. 25 2 =625.
Опишем функцию avtomorf, которая преобразует введенную строку в число и находит квадрат числа. Далее работа осуществляется со строками. Выделяются последние символы строки, представляющей квадрат числа, и сравниваются со строкой, соответствующей числу. Результатом этого анализа является решение задачи. Приведем сценарий в листинге 13.1.
Листинг 13.1. Автоморфные числа
<HTML>
<HEAD>
<TITLE>Автоморфные числа</TITLE>
<script language="JavaScript">
<!-— //
function avtomorf(obj)
{ var a=Number(obj.num.value)
var p=a*a
obj.num1.value=p
var sa= String(a)
var sp= String(p)
var nsa= sa.length
var nsp= sp.length
endsp=sp.substr(nsp-nsa,nsa)
if (endsp==sa) obj.res.value="автоморфное"
else obj.res.value="He является автоморфным"
}
//-—>
</script>
</HEAD>
<BODY>
<Н4>Проверка, является ли заданное число автоморфным</Н4>
<FORM name="form1">
<pre>
Число: <input type="text" size=25 name="num"><hr>
Число в квадрате: <input type="text" size=25 name="numl"><hr>
Результат: <input type="text" size=25 name="res"><hr>
</pre>
<input type="button" value=0пpeдeлить onClick="avtoraorf(form1)">
<input type="reset" value=Очистить>
</FORM>
</BODY>
</HTML>
Автоморфные числа в заданном интервале
Напишем сценарий, определяющий все автоморфные числа в заданном интервале.
Функция interav обеспечивает перебор всех натуральных чисел в заданном диапазоне. Для каждого из чисел диапазона проверяется, является ли оно автоморфным, и если это так, то формируется строка результата. В строку результата заносится само число и его квадрат. Кроме того, информация о каждом числе располагается на отдельной строке. Строка результата помещается в текстовое поле. Если в качестве промежутка взять интервал [20; 9999], то результат работы сценария будет таким, как на рис. 13.1.
Текст программ, реализующих поиск автоморфных чисел в заданном интервале, и HTML-код представлены в листинге 13.2.
![]() |
Рис 13.1. Автоморфные числа в заданном интервале |
Листинг 13.2. Автоморфные числа в заданном интервале
<HTML>
<HEAD>
<TITLE>Автоморфные числа в заданном интервале</TITLE>
<script language="JavaScript">
<!-— //
function interav(obj)
{ var s=""
var l=obj.left.value
var r=obj.rig.value
var s="Автоморфные числа в интервале от "+l+" до " +r+"\r\n"
for (var i=l; i<=r; i++) if (avtomorf(i)}
s +=i+" "+i*i+"\r\n"
obj.result.value=s
}
function avtomorf(a)
{ var p=a*a
var sa= String(a)
var sp= String(p)
var nsa= sa.length
var nsp= sp.length
endsp=sp.substr(nsp-nsa,nsa)
return (endsp==sa)
}
//-—>
</script>
</HEAD>
<BODY>
<Н4>Автоморфные числа в заданном интервале</Н4>
<FORM name="form1">
<pre>
Левая граница интервала: <input type="text" size=10 name="left">
Правая граница интервала: <input type="text" size=10 name="rig"><hr>
<input type="button" value=" Найти " onClick=" in-terav(forml)"><br>
<textarea cols=45 rows=5 name=result></textarea><br>
<input type="reset" value="Очистить">
</pre>
</FORM>
</BODY>
</HTML>
Числа Армстронга в заданном интервале
Напишем сценарий, определяющий все числа Армстронга, расположенные в заданном интервале. Натуральное число называется числом Армстронга, если оно совпадает с суммой k-ых степеней составляющих его цифр, где k — количество цифр в числе. Например, таким является число 153, т. к. 153 = 1 3 +5 3 +3 3 .
Функция arm получает в качестве параметра строку, для которой требуется определить, представляет ли содержимое строки число Армстронга. Переменная is определяет длину строки или количество цифр в числе. Далее в строке отщепляется по одному символу, символ преобразуется в число, определяется значение в заданной степени, и полученный результат добавляется к формируемой сумме. После того, как все символы строки будут просмотрены, проверяется условие для числа Армстронга. Функция arm выдает значение true, если число является числом Армстронга:
function arm(s)
{ var h; var k; var r
var ls= s.length
sum=0
for (var 1=0; i<=ls-l; i++)
{ h=s.charAt(i)
k=Number(h)
r=Math.pow(k,ls)
sum+=r
}
return (s==String(sum))
}
Перебор осуществляется функцией interav. Просматриваются все числа из заданного диапазона, и для каждого из них проверяется, является ли данное значение числом Армстронга. Так как параметр функции arm — строка, то и при обращении к ней в функции interav числовой параметр i преобразуется в строку. Результат работы помещается в текстовое поле. Каждое число располагается в отдельной строке. Описанные сценарии приведены в листинге 13.3.
Листинг 13.3. Числа Армстронга в заданном интервале
<HTML>
<HEAD>
<TITLE>Числа Армстронга в заданном интервале</TITLE>
<script language="JavaScript">
<!-— //
function interav(obj)
{ var s=""
var l=obj.left.value
var r=obj.rig.value
var s="Числа Армстронга в интервале от "+l+" до " +r+"\r\n"
for (var 1=1; i<=r; i++)
if (arm(String(i)))
s+=i+"\r\n"
obj.result.value=s
}
function arm(s)
{ var h; var k; var r
var ls= s.length
sum=0
for (var i=0; i<=ls-1; i++)
{ h=s.charAt(i); k= Number (h); r=Math.pow(k,Is); sum +=r }
return (s==String(sum))
}
//-—>
</script>
</HEAD>
<BODY>
<h4>Числа Армстронга в заданном интервале</h4>
<FORM name="form1">
<pre>
Левая граница интервала: <input type="text" size=10 name="left">
Правая граница интервала: <input type="text" size=10 name="rig"><hr>
<input type="button" value=" Найти " onClick=" interav(forml)"><br>
<textarea cols=45 rows=8 name=result></textarea><br>
<input type="reset" value="0чистить">
</pre>
</FORM>
</BODY>
</HTML>
Если поиск чисел производить в интервале [100; 9999], то результат работы сценария будет таким, как на рис. 13.2.
![]() |
Рис 13.2. Числа Армстронга в заданном интервале |
Функция parseint (s,n) возвращает целое число по основанию, заданному в качестве второго параметра. Если первый символ в строке не является цифрой в указанной вторым параметром системе счисления, то функция
parseint (s,n) возвращает значение "NaN" .
Приведем сценарий, который содержит функцию-тест, демонстрирующую работу функции parseint (s,n). В результате работы теста исследуется введенная строка, и выводятся числа, соответствующие этой строке в различных системах счисления (листинг 13.4).
Листинг 13.4. Демонстрационные тесты для функции parseint (s,n)
<HTML>
<HEAD>
<TITLE>Тест, демонстрирующий работу функции parseint(s,n)</TITLE>
<script language="JavaScript">
<!-- //
function test(obj)
{ var s=obj.numtest.value
var tl=parseInt(s,16); obj.test1.value=tl
var t2=parselnt(s,10); obj.test2.value=t2
var t3=parselnt(s,8); obj.test3.value=t3
var t4=parselnt(s,2); obj.test4.value=t4
var t5=parselnt(s,7); obj.tests.value=t5
}
//-—>
</script>
</HEAD>
<BODY>
<Р>Тест, демонстрирующий работу функции parseint(s,n)</P>
<pre>
<FORM name="form1">
Исходная строка: <input type="text" size=25
name="numtest"><hr>
Число в шестнадцатеричной системе <input type="text" size=25
name="testl"><hr>
Число в десятичной системе <input type="text" size=25
name="test2"><hr>
Число в восьмеричной системе <input type="text" size=25
name="test3"><hr>
Число в двоичной системе <input type="text" size=25
name="test4"><hr>
Число в семеричной системе <input type="text" size=25
name=" tests "><hr>
<input type="button" value=Tecт onClick="test(fortnl)"><hr>
<input type="reset" value=Очистить>
</pre>
</FORM>
</BODY>
</HTML>
.Напишите программу, которая по введенной строке определяет, является ли содержимое строки числом, кратным 9.
Итак, строка может не представлять числа, или представлять число, не кратное 9, или, наконец, представлять число, кратное 9. Сначала убедимся в том, что строка содержит число, а затем проанализируем, является ли остаток от деления данного числа на 9 равным нулю. Для выполнения этих проверок воспользуемся стандартными функциями parseFioat и isNaN .
Сценарий приведен в листинге 13.5.
Листинг 13.5. Представляет ли строка число, кратное 9
<HTML>
<HEAD>
<TITLE>Проверка, является ли содержимое строки числом,
кратным 9</TITLE>
<script language="JavaScript">
<!—- //
function test(obj)
{ var n
var s= obj.num.value
var stres=""
if (isNaN(s))
stres="Введенная строка не является числом"
else
( n=Number(s)
if ((n%9)==0)
stres="Введенная строка - число, кратное 9"
else
stres="Введенная строка - число, не кратное 9"
}
obj.res.value=stres
}
//-—>
</script>
</HEAD>
<BODY>
<Р>Проверка, является ли заданная строка числом, кратным 9</Р>
<рrе>
<FORM name="form1">
Исходная строка: <input type="text" size=45 name="num"><hr>
Результат: <input type="text" size=45 name="res"><hr>
<input type="button" value=0пpeдeлить onClick="test(forml)"><hr>
<input type="reset" value=Очистить>
</pre>
</FORM>
</BODY>
</HTML>
1. Напишите программу, которая определяет, является ли введенная последовательность символов "изображением" целого двоичного числа без знака;
2. Напишите программу, которая для последовательности символов определяет, содержигли она целое значение, кратное 5.
3. Напишите сценарий, в результате работы которого выясняется, является введенная последовательность символов натуральным числом, которое при делении на 7 дает в остатке 5.
4. Напишите сценарий, определяющий k-ю цифру последовательности, в которой выписаны подряд:
• все натуральные числа (1234567891011121314...);
• квадраты натуральных чисел (149162536...);
• все числа Фибоначчи (1123581321...);
• все простые числа (2357111317...).
Назад | Содержание | Вперед |