Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Работа с текстом (https://javascript.ru/forum/misc/52373-rabota-s-tekstom.html)

ОмаЭль 16.12.2014 16:57

Работа с текстом
 
Есть код: Требуемая задача: Если число не палиндром, то перевернем его и сложим с исходным числом. Далее если опять не полендром, то все по кругу. Я уже запутался, в функции 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 раза пробела

рони 16.12.2014 17:16

ОмаЭль,
document.write -- это ненадо использовать, это надо убрать и забыть что такое существует.

ОмаЭль 16.12.2014 18:28

Цитата:

Сообщение от рони (Сообщение 346759)
ОмаЭль,
document.write -- это ненадо использовать, это надо убрать и забыть что такое существует.

Почему в разных местах кода для отладки самое то. А для таких заданий для отображения. Лучше с реальной задачей подскажите....

рони 16.12.2014 18:49

ОмаЭль,
когда уберёте из вашего кода document.write -- всё автоматом заработает. давайте я вам код рабочий , а вы 10 ссылок с форума с вопросами, как у вас.

ОмаЭль 16.12.2014 19:18

Цитата:

Сообщение от рони (Сообщение 346772)
ОмаЭль,
когда уберёте из вашего кода document.write -- всё автоматом заработает. давайте я вам код рабочий , а вы 10 ссылок с форума с вопросами, как у вас.

Ахаха официально признаю что я ЛОШАРА хД
Напроч забыл что d.w полностью переписывает страницу хД
Еще подскажи тогда чем лучше смотреть переменные? Кроме как в консоле браузера... и alert...

рони 16.12.2014 19:35

ОмаЭль,
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)])

рони 16.12.2014 19:44

ОмаЭль, если очень хочется с 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>

ОмаЭль 16.12.2014 19:50

Видишь ли в задании не просто определить число полиндром или нет, надо что бы оно увеличивалось на перевернутое число и опять проверялось, для этого есть счетчик что бы не зависал хД Дак это как не работало так и не работает, переменная hisl не увеличивается

рони 16.12.2014 20:01

Цитата:

Сообщение от ОмаЭль
переменная hisl не увеличивается

а вы проверяли?

рони 16.12.2014 20:02

ОмаЭль,
верните строку 44 как у вас -- убрал вывод так как не понял зачем 10 раз складывать


Часовой пояс GMT +3, время: 01:37.