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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Некорректно сравнивает две переменные

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Помогите найти, где я допустил ошибку!
rappix
Отправлено: 14 Ноября, 2012 - 13:58:46
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Нояб. 2012  


Помог: 0 раз(а)




Всем здравствуйте. Поставлена задача: В скрипте, используя вложенные циклы 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. ?>


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

 
 Top
Bartezz
Отправлено: 14 Ноября, 2012 - 14:07:57
Post Id



Гость


Покинул форум
Сообщений всего: 70
Дата рег-ции: Февр. 2010  


Помог: 1 раз(а)




А какие числа кроме единицы должны по вашему выделиться? Ни одно другое не удовлетворяет условию
(Добавление)
Если необходимо именно выделять цифры 1, 3, 6, 10 и тд, тогда сначала неплохо бы массив этих самых чисел бы создать через тот же цикл
У вас не условие неверно, у вас в принципе весь код не на ту логику настроен

(Отредактировано автором: 14 Ноября, 2012 - 14:12:22)

 
 Top
IllusionMH
Отправлено: 14 Ноября, 2012 - 14:12:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




rappix, вы пытаетесь сравнивать порядковый номер треугольного числа с самим треугольным числом(что истина только для единицы, ибо второе - 3, а третье - 6)
Первое, что нашлось в гугуле, как переписать разберетесь сами

(Отредактировано автором: 14 Ноября, 2012 - 14:14:10)

 
 Top
rappix
Отправлено: 14 Ноября, 2012 - 14:13:13
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Нояб. 2012  


Помог: 0 раз(а)




В задание еще было сказано без испольщования массива, забыл указать, извеняюсь

(Отредактировано автором: 14 Ноября, 2012 - 14:14:08)

 
 Top
AlexAnder
Отправлено: 14 Ноября, 2012 - 14:14:36
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


Помог: 34 раз(а)





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

Однако


-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
Bartezz
Отправлено: 14 Ноября, 2012 - 14:22:12
Post Id



Гость


Покинул форум
Сообщений всего: 70
Дата рег-ции: Февр. 2010  


Помог: 1 раз(а)




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. ?>

Исправил пару символов

(Отредактировано автором: 14 Ноября, 2012 - 14:25:08)

 
 Top
rappix
Отправлено: 14 Ноября, 2012 - 14:29:54
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Нояб. 2012  


Помог: 0 раз(а)




Bartezz, спасибо большое, теперь всё стало понятно.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB