Работа с текстом
Есть код: Требуемая задача: Если число не палиндром, то перевернем его и сложим с исходным числом. Далее если опять не полендром, то все по кругу. Я уже запутался, в функции perevernytb() строка возвращается с пробелом в начале и ни какой метод её не берет (для отображения этого в 13 строке стоит вывод), + ко всему функция прорабатывается 1 раз потом переменная обнуляется , ПОЧЕМУ то???? Помогите
Натуральное число называется палиндромом, если оно читается одинаково с обеих сторон (например, 191).
<HTML><HEAD><TITLE>Таблица на Javascript</TITLE>
<SCRIPT type="text/javascript">
<!--
function perevernytb() {
//hisl=document.all.hislo.value;
kolvo=hisl.length;
pereven=" ";
for(var i=0;i<kolvo;i++){
pereven+=hisl.charAt(kolvo-(i+1));
}
document.write("-"+pereven+"-");
pereven=pereven.replace(/\s+/g,'');
return pereven
}
function primer(){
hisl=document.all.hislo.value;perevernytb();
var chethik=1;
perevernytb();
while(pereven!=hisl){hisl=Number(hisl)+Number(pereven);
alert(hisl);perevernytb();chethik++;
if(chethik==10){break}}
if(pereven==hisl){document.write("число полиндром : "+hisl);}
if(pereven!=hisl){document.write("число не полиндром : "+hisl);}
}
//-->
</SCRIPT>
</HEAD>
<body>
<input type="text" value="171" name="hislo"><br>
<input type="button" value="активация" OnClick="primer()" >
</body>
</HTML>
LoL, ни чего не меняя полиндромы начало находить, но что hisl не увеличивается после 1 раза пробела |
ОмаЭль,
document.write -- это ненадо использовать, это надо убрать и забыть что такое существует. |
Цитата:
|
ОмаЭль,
когда уберёте из вашего кода document.write -- всё автоматом заработает. давайте я вам код рабочий , а вы 10 ссылок с форума с вопросами, как у вас. |
Цитата:
Напроч забыл что d.w полностью переписывает страницу хД Еще подскажи тогда чем лучше смотреть переменные? Кроме как в консоле браузера... и alert... |
ОмаЭль,
ok )))
function primer(a) {
for (a = ("" + a).split(""); 1 < a.length;)
if (a.pop() != a.shift()) return false;
return true
};
alert([primer(191),primer(2002),primer(20022)])
|
ОмаЭль, если очень хочется с document.write
<!DOCTYPE HTML>
<HTML><HEAD><TITLE>Таблица на Javascript</TITLE>
<meta charset="utf-8">
<SCRIPT type="text/javascript">
document.write = function(a) {
document.body.appendChild(document.createTextNode(a));
}
function perevernytb() {
//hisl=document.all.hislo.value;
kolvo = hisl.length;
pereven = " ";
for (var i = 0; i < kolvo; i++) {
pereven += hisl.charAt(kolvo - (i + 1));
}
// document.write("-"+pereven+"-");
pereven = pereven.replace(/\s+/g, '');
return pereven
}
function primer() {
hisl = document.all.hislo.value;
perevernytb();
var chethik = 1;
// perevernytb();
while (pereven != hisl) {
hisl = Number(hisl) + Number(pereven);
// alert(hisl);
perevernytb();
chethik++;
if (chethik == 10) {
break
}
}
if (pereven == hisl) {
document.write("число полиндром : " + document.all.hislo.value);
}
if (pereven != hisl) {
document.write("число не полиндром : " + document.all.hislo.value);
}
}
</SCRIPT>
</HEAD>
<body>
<input type="text" value="171" name="hislo"><br>
<input type="button" value="активация" OnClick="primer()" >
</body>
</HTML>
|
Видишь ли в задании не просто определить число полиндром или нет, надо что бы оно увеличивалось на перевернутое число и опять проверялось, для этого есть счетчик что бы не зависал хД Дак это как не работало так и не работает, переменная hisl не увеличивается
|
Цитата:
|
ОмаЭль,
верните строку 44 как у вас -- убрал вывод так как не понял зачем 10 раз складывать |
Цитата:
|
ОмаЭль,
так ?
function test(a) {
for (a = ("" + a).split(""); 1 < a.length;)
if (a.pop() != a.shift()) return !1;
return !0
}
function primer(a) {
for (var b = 0; 10 > b && !test(a); b++) a += +("" + a).split("").reverse().join("");
return [a, test(a)]
};
alert([primer(1),primer(2002),primer(18)])
|
Да, твой код работает, но для меня это еще сложноватая структура (Имеется ввиду понимаю как ты реализовал, но сам бы так не написал) , как бы смешно тебе это не казалось , мне интересно почему у меня не складывает...
|
ОмаЭль,
потому что -- вы хотите перевернуть строку а сложить числа |
Цитата:
|
ОмаЭль, смотрите медитируйте ... var нехватает ...for нерационален ... document.write ненужен ... но работает.
<!DOCTYPE html>
<html>
<head>
<title>Таблица на Javascript</title>
<meta charset="utf-8">
<script type="text/javascript">
document.write = function(a) {
document.body.appendChild(document.createTextNode(a));
}
function perevernytb() {
kolvo = (''+hisl).length; //преобразуем в строку
pereven = " ";
for(var i = 0; i < kolvo; i++) {
pereven += (''+hisl).charAt(kolvo -(i + 1)); //преобразуем в строку
}
pereven = pereven.replace(/\s+/g, '');
return +pereven //возвращаем число
}
function primer() {
hisl = +document.all.hislo.value; //преобразуем в число
var chethik = 1;
while(perevernytb()!=hisl) {
hisl += perevernytb();
chethik++;
if(chethik==10) {
break
}
}
if(perevernytb()==hisl) {
document.write("число полиндром : " + hisl);
}
if(perevernytb()!=hisl) {
document.write("число не полиндром : " + hisl);
}
}
</script>
</head>
<body>
<form>
<input type="text" value="171" name="hislo"><br>
<input type="button" value="активация" onclick="primer()">
</form>
</body>
</html>
|
про for и document согласен, а вот про var его там и не надо, если его указать то функция к которой обращаются не увидит переменную. P.s. Области видимости =)
Спасибо за помощь! |
Добавлю, что транслит - последнее дело. Хочешь писать по-русски - пиши по-русски, js позволяет:
<html>
<head>
<title>Таблица на Javascript</title>
<meta charset="utf-8">
<script type="text/javascript">
document.write = function(a) {
document.body.appendChild(document.createTextNode(a));
}
function перевернуть() {
количество = (''+число).length; //преобразуем в строку
перевёрн = " ";
for(var i = 0; i < количество; i++) {
перевёрн += (''+число).charAt(количество -(i + 1)); //преобразуем в строку
}
перевёрн = перевёрн.replace(/\s+/g, '');
return +перевёрн //возвращаем число
}
function пример() {
число = +document.all.число.value; //преобразуем в число
var счётчик = 1;
while(перевернуть() != число) {
число += перевернуть();
счётчик++;
if( счётчик == 10 ) {
break
}
}
if(перевернуть() == число) {
document.write("число полиндром : " + число);
}
if(перевернуть() != число) {
document.write("число не полиндром : " + число);
}
}
</script>
</head>
<body>
<form>
<input type="text" value="171" name="число"><br>
<input type="button" value="активация" onclick="пример()">
</form>
</body>
</html>
Всё равно это лучше чем транслит. |
| Часовой пояс GMT +3, время: 07:08. |