Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Помогите, пожалуйста, с задачей

Страниц (1): [1]
 

1. Вишенка - 10 Июня, 2017 - 22:37:07 - перейти к сообщению
Числа вводятся с клавиатуры до тех пор, пока не встретятся идущие подряд три отрицательных числа. Написать программу, печатающую те тройки чисел, которые могут быть длинами сторон равнобедренного треугольника.
Помогите написать код Огорчение Проблема с осуществлением этого ввода чисел и сохранением введённых данных
2. Vladimir Kheifets - 14 Июня, 2017 - 19:37:50 - перейти к сообщению
Вишенка пишет:
Числа вводятся с клавиатуры до тех пор, пока не встретятся идущие подряд три отрицательных числа. Написать программу, печатающую те тройки чисел, которые могут быть длинами сторон равнобедренного треугольника.
Помогите написать код Огорчение Проблема с осуществлением этого ввода чисел и сохранением введённых данных


Добрый вечер!

Откровенно говоря, мне не нравится идея вводить данные "пока не встретяться идущие подряд три отрицательных числа".
Думаю, что правильнее поставить кнопку для окончания вввода данных.
Так я и сделал, однако три отрицальных числа также обрабатываются.
Ещё есть две кнопки. Одна для дополнения чисел, а вторая для удаления смаркированных чисел.
Если что-то будет непонятно, спрашивайте.
Удачи!


Можете посмотреть здесь:

https://www[dot]alto-booking[dot]com/tes[dot][dot][dot]/InputNumber.php

Код:

PHP:
скопировать код в буфер обмена
  1. <?
  2. if(isset($_POST))
  3. {
  4.         $NumberArr=preg_split("/\D+/",$_POST['NumberPack']);
  5.         $k=count($NumberArr);
  6. }
  7. else $k=0;
  8. ?>
  9. <html>
  10. <head>
  11. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  12. <style>
  13. select{height:300px; width:100px}
  14. </style>
  15. <title>Demo</title>
  16. <script>
  17.         var kMn=0;
  18.         function addNumber(){
  19.                 s=document.getElementById("NumberList");
  20.                 n=document.getElementById("Number").value;
  21.                 if(parseInt(n)<0)
  22.                 {
  23.                         kMn++;
  24.                         if(kMn>2)
  25.                         {
  26.                                 OptionToArr("NumberList");
  27.                                 return;
  28.                         }
  29.                 }
  30.                 else
  31.                 {
  32.                         kMn=0;
  33.                         o = document.createElement("option");
  34.                         o.text = n;
  35.                         o.value = n;
  36.                         s.add(o);
  37.                 }
  38.         }
  39.         //--------------------------------------------
  40.         function removeNumber(){
  41.                 s = document.getElementById("NumberList");
  42.                 s.remove(s.selectedIndex);
  43.         }
  44.         //--------------------------------------------
  45.         function OptionToArr(obj){
  46.         var NumberArr = new Array();
  47.                 s = document.getElementById(obj);
  48.                 k = s.length;
  49.                 if(k<3)
  50.                 {
  51.                         alert("Ошибка! Вы должны ввести не меньше трёх чисел!");
  52.                         return;
  53.                 }
  54.                 for (i=0; i<k; i++)
  55.                 {
  56.                         NumberArr[i] = s.options[i].text;
  57.                 }
  58.  
  59.                 //------------------------------
  60.                 debug="";
  61.                 buf="";
  62.                 for (i=0; i<k; i++)
  63.                 {
  64.                         debug+=(i+1)+": "+NumberArr[i]+"\n";
  65.                         buf+=NumberArr[i]+";";
  66.                 }
  67.                 alert("Количество введеных данных: "+k+"\nВы ввели числа:\n"+debug);           
  68.                 //------------------------------
  69.                 f=document.Myform;
  70.                 f.NumberPack.value=buf.substring(0,buf.length-1);
  71.                 f.submit();
  72.         }
  73. </script>
  74. </head>
  75. <body>
  76. <form action="" method="post" name="Myform" id="Myform" >
  77. <table width="293" border="1">
  78.   <tr>
  79.     <td width="144" valign="top"><input name="Number"  id="Number" type="text"  onClick="this.value=''" /></td>
  80.         <td width="38" valign="top">
  81.         <input type="button" name="add" id="add" value=">>>"  onclick="addNumber()"/>        <input type="button" name="remove" id="remove" value="<<<"  onclick="removeNumber()"/>
  82.         <br />    </td>
  83.     <td width="89">
  84.         <select name="NumberList" size="50" multiple="multiple" id="NumberList" >
  85.     <?
  86.         if($k>0)
  87.         {
  88.                 foreach($NumberArr as $v)
  89.                 {
  90.                         if($v>0)echo "<option>$v</option>\n";
  91.                 }
  92.         }
  93.         ?>
  94.         </select>
  95.         </td>
  96. </tr>
  97.  
  98. <tr>
  99.     <td height="47" colspan="3" align="center" valign="middle">
  100.       <input type="button" name="end" id="end" value="Обработка данных"  onClick="OptionToArr('NumberList')"/>
  101.     </td>
  102. </tr>
  103. </table>
  104. <input name="NumberPack"  type="hidden" value="">
  105. </form>
  106. <?
  107. if($k>0)
  108. {
  109.         echo "<hr>Количество введеных данных: ".$k."<br>Вы ввели числа:<br>";
  110.         foreach($NumberArr as $v)
  111.         {
  112.                 echo "$v<br>";
  113.         }
  114.         sort($NumberArr);
  115.         $i=0;
  116.         $iP=0;
  117.         $iNP=0;
  118.         $NumberArrP=array();
  119.         $NumberArrNP=array();
  120.         while ($i<$k)
  121.         {
  122.        if($i+1<$k)
  123.        {
  124.           if($NumberArr[$i]==$NumberArr[$i+1])
  125.           {
  126.                  $NumberArrP[$iP]=$NumberArr[$i];
  127.                  $i=$i+2;
  128.                  $iP++;
  129.           }
  130.           else
  131.           {
  132.              $NumberArrNP[$iNP]=$NumberArr[$i];
  133.                  $iNP++;
  134.                  $i++;
  135.           }
  136.        }
  137.        else
  138.        {
  139.                 $NumberArrNP[$iNP]=$NumberArr[$i];
  140.                 $iNP++;
  141.                 $i++;
  142.        }
  143.         }
  144.         echo "<hr>";
  145.         foreach($NumberArrP as $v1)
  146.         {
  147.                 echo "Длины сторон трегольника: $v1<br>";
  148.                 foreach($NumberArrNP as $v2)
  149.                 {
  150.                    if($v2<2*$v1)
  151.                    {
  152.                       echo "Длина основания трегольника: $v2<br>";
  153.                    }
  154.                 }
  155.         echo "<hr>";
  156.         }
  157.  
  158. }
  159. ?>
  160. </body>
  161. </html>

 

Powered by ExBB FM 1.0 RC1