Вишенка пишет:Числа вводятся с клавиатуры до тех пор, пока не встретятся идущие подряд три отрицательных числа. Написать программу, печатающую те тройки чисел, которые могут быть длинами сторон равнобедренного треугольника.
Помогите написать код Проблема с осуществлением этого ввода чисел и сохранением введённых данных
Добрый вечер!
Откровенно говоря, мне не нравится идея вводить данные "пока не встретяться идущие подряд три отрицательных числа".
Думаю, что правильнее поставить кнопку для окончания вввода данных.
Так я и сделал, однако три отрицальных числа также обрабатываются.
Ещё есть две кнопки. Одна для дополнения чисел, а вторая для удаления смаркированных чисел.
Если что-то будет непонятно, спрашивайте.
Удачи!
Можете посмотреть здесь:
https://www[dot]alto-booking[dot]com/tes[dot][dot][dot]/InputNumber.php
Код:
PHP:
скопировать код в буфер обмена
<? { $NumberArr=preg_split("/\D+/",$_POST['NumberPack']); } else $k=0; ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style> select{height:300px; width:100px} </style> <title>Demo</title> <script> var kMn=0; function addNumber(){ s=document.getElementById("NumberList"); n=document.getElementById("Number").value; if(parseInt(n)<0) { kMn++; if(kMn>2) { OptionToArr("NumberList"); return; } } else { kMn=0; o = document.createElement("option"); o.text = n; o.value = n; s.add(o); } } //-------------------------------------------- function removeNumber(){ s = document.getElementById("NumberList"); s.remove(s.selectedIndex); } //-------------------------------------------- function OptionToArr(obj){ var NumberArr = new Array(); s = document.getElementById(obj); k = s.length; if(k<3) { alert("Ошибка! Вы должны ввести не меньше трёх чисел!"); return; } for (i=0; i<k; i++) { NumberArr[i] = s.options[i].text; } //------------------------------ debug=""; buf=""; for (i=0; i<k; i++) { debug+=(i+1)+": "+NumberArr[i]+"\n"; buf+=NumberArr[i]+";"; } alert("Количество введеных данных: "+k+"\nВы ввели числа:\n"+debug); //------------------------------ f=document.Myform; f.NumberPack.value=buf.substring(0,buf.length-1); f.submit(); } </script> </head> <body> <form action="" method="post" name="Myform" id="Myform" > <table width="293" border="1"> <tr> <td width="144" valign="top"><input name="Number" id="Number" type="text" onClick="this.value=''" /></td> <td width="38" valign="top"> <input type="button" name="add" id="add" value=">>>" onclick="addNumber()"/> <input type="button" name="remove" id="remove" value="<<<" onclick="removeNumber()"/> <br /> </td> <td width="89"> <select name="NumberList" size="50" multiple="multiple" id="NumberList" > <? if($k>0) { foreach($NumberArr as $v) { if($v>0)echo "<option>$v</option>\n"; } } ?> </select> </td> </tr> <tr> <td height="47" colspan="3" align="center" valign="middle"> <input type="button" name="end" id="end" value="Обработка данных" onClick="OptionToArr('NumberList')"/> </td> </tr> </table> <input name="NumberPack" type="hidden" value=""> </form> <? if($k>0) { echo "<hr>Количество введеных данных: ".$k."<br>Вы ввели числа:<br>"; foreach($NumberArr as $v) { echo "$v<br>"; } $i=0; $iP=0; $iNP=0; while ($i<$k) { if($i+1<$k) { if($NumberArr[$i]==$NumberArr[$i+1]) { $NumberArrP[$iP]=$NumberArr[$i]; $i=$i+2; $iP++; } else { $NumberArrNP[$iNP]=$NumberArr[$i]; $iNP++; $i++; } } else { $NumberArrNP[$iNP]=$NumberArr[$i]; $iNP++; $i++; } } echo "<hr>"; foreach($NumberArrP as $v1) { echo "Длины сторон трегольника: $v1<br>"; foreach($NumberArrNP as $v2) { if($v2<2*$v1) { echo "Длина основания трегольника: $v2<br>"; } } echo "<hr>"; } } ?> </body> </html>
(Отредактировано автором: 14 Июня, 2017 - 19:49:35)
|