Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Некорректно сравнивает две переменные
Форумы портала PHP.SU » » Вопросы новичков » Некорректно сравнивает две переменные

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

1. rappix - 14 Ноября, 2012 - 13:58:46 - перейти к сообщению
Всем здравствуйте. Поставлена задача: В скрипте, используя вложенные циклы for, отобразите на экране таблицу 10×10, в ячейках которой идут числа от 1 до 100, при этом красным цветом выделены «треугольные» числа, т.е. числа вида n(n+1)/2 (где n=1,2,… 14).

вот мой код

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. print "<table border=1>\n";
  3. for ($y=1; $y <= 10; $y++) {
  4.      print "<tr>\n";
  5.      for ($x=1; $x <= 10; $x++) {
  6.           print "\t<td>";
  7.           ++$chislo;
  8.           $treug = $chislo * ($chislo + 1) / 2;
  9.           if ($chislo == $treug)  {
  10.               print "<font style=\"color:#FF0000\">$chislo</font>";}
  11.           else  {
  12.            print ($chislo);
  13.           }
  14.           print "</td>\n";
  15.           }
  16.      print "</tr>\n";
  17.      }
  18. print "</table>";
  19. ?>


В итоге таблица отображается нормально, а вот "треугольные" числа, кроме первого, не выделяются цветом. Как я понимаю ошибка где-то вот здесь

2. Bartezz - 14 Ноября, 2012 - 14:07:57 - перейти к сообщению
А какие числа кроме единицы должны по вашему выделиться? Ни одно другое не удовлетворяет условию
(Добавление)
Если необходимо именно выделять цифры 1, 3, 6, 10 и тд, тогда сначала неплохо бы массив этих самых чисел бы создать через тот же цикл
У вас не условие неверно, у вас в принципе весь код не на ту логику настроен
3. IllusionMH - 14 Ноября, 2012 - 14:12:52 - перейти к сообщению
rappix, вы пытаетесь сравнивать порядковый номер треугольного числа с самим треугольным числом(что истина только для единицы, ибо второе - 3, а третье - 6)
Первое, что нашлось в гугуле, как переписать разберетесь сами
4. rappix - 14 Ноября, 2012 - 14:13:13 - перейти к сообщению
В задание еще было сказано без испольщования массива, забыл указать, извеняюсь
5. AlexAnder - 14 Ноября, 2012 - 14:14:36 - перейти к сообщению

Цитата:
if ($chislo == $treug) {
print "<font style=\"color:#FF0000\">$chislo</font>";}
else {
print ($chislo);
}

Однако
6. Bartezz - 14 Ноября, 2012 - 14:22:12 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. print "<table border=1>\n";
  3. for ($y=1; $y <= 10; $y++) {
  4.      print "<tr>\n";
  5.      for ($x=1; $x <= 10; $x++) {
  6.           print "\t<td>";
  7.           ++$chislo;
  8.           // проверка треугольных чисел
  9.           $find=false;
  10.           for ($n=1; $n<=14; $n++)
  11.           {
  12.             if ($chislo == $n*($n+1)/2)  
  13.             {
  14.                 print "<font style=\"color:#FF0000\">$chislo</font>";
  15.                 $find = true;
  16.                 break;
  17.             }
  18.           }
  19.           if ($find==false)
  20.           {
  21.               print ($chislo);
  22.           }
  23.           print "</td>\n";
  24.           }
  25.      print "</tr>\n";
  26.      }
  27. print "</table>";
  28. ?>

Исправил пару символов
7. rappix - 14 Ноября, 2012 - 14:29:54 - перейти к сообщению
Bartezz, спасибо большое, теперь всё стало понятно.

 

Powered by ExBB FM 1.0 RC1