Назовём красивыми числа, в записи которых есть минимум две одинаковые цифры (например: 44, 505, 1101, 2324). Сумма красивых чисел, меньших 100, равна 495 (11 + 22 + 33 + 44 + 55 + 66 + 77 + 88 + 99 = 495). Код (Text): <?php /* Найти красивые числа до 100*/ $i = 0; $itog = 0; // 100 do { $i++; $x = $i[0]; $y = $i[1]; if ($x == $y) { $itog = $itog + $i; } } while ($i < 100); echo "$itog"; ?> ответ выдает - 5050 не правильный
если находятся две одинаковых цифры то они передаются в переменную $itog и каждый раз при нахождении таких цифр они суммируются чтобы у нас получилось число 495
А после расскажи, зачем ты с нуля перебираешь, если сразу ясно, что минимальное красивое число - 11. И почему do - while, а не for, который специально придуман для таких переборов?
а зачем тогда вообще их перебирать если их всех ясно? на счёт переборки с нуля тут всё правильно число 11 необходимо найти при помощи алгоритма, а не прописать руками
@Vladimir789, для начала надо сделать так, чтобы обращение к переменной как к массиву имело смысл. Например, "превратить" целое число $i в строку $j, которую дальше и обрабатывать. И перед использованием $j[1] - проверять его существование.
вот так сделал, подсказали на соседнем форуме Код (Text): // 100 $i = 0; $itog = 0; do { $i++; $i = strval($i); $x = $i[0]; $y = $i[1]; if ($x == $y) { $itog = $itog + $i; } } while ($i < 100); echo "$itog <br> <br>";
В числе 1 у тебя не будет $i[1] даже после strval, а значит будет ошибка в лог идти. А перебирать до 11 вручную - да ну Даже если бы 100 задавалось пользовательским вводом, я бы сделал проверку, что если введено число < 11, сразу давать 0, а если больше - идти от 11. Кстати, твой алгоритм только на двухзначные цифры