Цикл for

  • Автор темы Автор темы USA
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.
Что то я не понял
У тебя y = 4 и с каждым шагом отнимается на единицу, а в условии надо чтоб стало больше 4-х, внимание вопрос... сколько раз надо отнять от 4-х единицу, чтоб стало больше четырёх ?
 
зачем его останавливать? цикл идет от 0 (или 1) до высоты ... если мы отнимим половину высоты от того что дает нам цикл, получим от минус половины до половины (дели для начала четное числ)... дальше берем по модулю то что получилось....
 
У тебя y = 4 и с каждым шагом отнимается на единицу, а в условии надо чтоб стало больше 4-х, внимание вопрос... сколько раз надо отнять от 4-х единицу, чтоб стало больше четырёх ?
где то 9 раз ?
у меня получается от 4 до 1040062 ) шось я нуб,завтра что то подумаю
 
главное не меняй переменную цикла, создай новую, не жалей памяти!
 
нужно сделать, что б шло 4,3,2,1,0,1,2,3,4 с помощью abs ? а если его не останавливать с помощью break; нужно задать до какого числа макс будет увеличивается во втором цикле?

PHP:
<?php
echo "<pre>";
$height=4;
$stopH = 4;
for($y=4; $y<=$height; $y--){  
	echo abs($y)."\n";
	if($y == 0){
		for($y=1; $y<=$stopH; $y++){  
		echo abs($y)."\n";
		}
	}
}
?>
PHP:
4
3
2
1
0
1
2
3
4
4
3
2
1
0
.
.
.
 
если мы отнимим половину высоты от того что дает нам цикл, получим от минус половины до половины (дели для начала четное числ)... дальше берем по модулю то что получилось....
PHP:
for($y=0; $y<$height; $y++){  
    echo abs($y-(int)($height/2));
}

можно несколько иначе...
PHP:
for($y=$height/-2; $y<$height/2; $y++){  
    echo (int)abs($y);
}
а вот те 4 года о которых ты рассказывал, ты что писал вообще?
 
меня циклы стороной обходили как то (копия блокнота windows,калькулятор и тд, были сортировки пузырьком и тд но тогда как то их сделал ) попадались самые простоые.Я и не пытался тогда сильно как то учить. Я только сейчас начал учить их. Позор мне (
я даже не знал, что так можно в цикле писать
PHP:
for($y=$height/-2; $y<$height/2; $y++)
а как быть с str_repeat ? ошибку выдает когда abs стоит
вот зачем вы меня спрашивали "а высоту поменять это 2 цифры сменить?" $y=$height/-2 =)
 
USA
его задачка это обьяснение что за магия таится за каждым числом

первая задачка практически везде это числа фибоначи, или другая которую стоит тебе решить это простые числа также задачка на факториал...
найти первые 20 простых чисел и решить 10! после вернемся к ромбику
 
PHP:
<?php
// длину по умолчанию
$default_Fn = 5;

$Fn = (
    isset( $_GET['Fn'] ) // если  длина передана по гет
    ? (int)$_GET['Fn']   // используем ее как числовое значение
    : $default_Fn        // иначе используем значение по умолчанию
);
?>
<html>
    <head>
        <title>triangle</title>
        <style type="text/css">
            pre.output{
                border: 1px solid silver;
                background-color: #f5f5f5;
                padding: 10px;
                color: gray;
            }
        </style>
    </head>
    <body>
        <form action="" method="get">
            <fieldset>
                <legend>Фибоначчи</legend>
                <label for="Fn">Fn:</legend>
                <input type="text" id="Fn" name="Fn" value="<?=$Fn?>">
                <input type="submit" value="generate">
            </fieldset>
        </form>

        <pre class="output"><?php

            $Fo = 0;
            $F1 = 1;
            
            echo $Fo.",".$F1;
            for($i =0; $i <$Fn-2; $i++){
                
                $final = $Fo + $F1;
                $Fo = $F1;
                $F1 = $final;
                echo ",".$final;
            }
        ?>
        </pre>
    </body>
</html>
Безымянный.png

Что то я не понял каким способом считаются простые числа ( 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83,
 
ну наверное те, которые не делятся на ни одно из меньшего простого... или a%b != 0 тут конечно обратный цикл нужен.

зы фибоначчи начинаются с 1,1 ..
 
$Fn = (
isset( $_GET['Fn'] ) // если длина передана по гет
? (int)$_GET['Fn'] // используем ее как числовое значение
: $default_Fn // иначе используем значение по умолчанию
);
Чую закидают меня помидорами, но я бы написал скорее так...
PHP:
$Fn = isset($_GET['Fn']) && ctype_digit($_GET['Fn'])
	? $_GET['Fn']
	: $default_Fn;
Т.е не приводил бы к int , а проверял бы просто цифра там или нет... Проверять данные вместо насильственного приведения считаю более разумным решением. (чтоб в случае если в GET будет что-то типа 10№;!№:"!"№;; срабатывало дефолтное значение а не воспринималось так словно там 10, ну а также чтоб не было проблем со значениями выше 4млрд) для фетиша строгой типизации можно конечно приводить дополнительно в int/float в зависимости от числа, но это уже совсем фетиш...
 
да согласен, еще рамок не хватает
PHP:
isset($_GET['Fn']) && ctype_digit($_GET['Fn']) && $_GET['Fn'] > $min && $_GET['Fn'] < $max
 
Рамки я бы отдельной строкой проверял, т.е сначала получаем число (и проверяем число ли это), а потом проверяем подходит ли оно нам (чисто чтоб выработать привычку проверять все числа одинаково, а уже то что касается конкретно этого случая проверять отдельно)

Да и код проще читаться будет (для командной разработки чаще более важна "читабельность" кода чем краткость и всякие прочие джедайские техники, лучше привыкать заранее, а всякие "оптимизации" это уже вопрос второй, большинству рядовых разработчиков это никогда не понадобится, а когда понадобится оно само как-то придёт...)
 
не хотелось отвлекаться от основной программки, но написать простой каркас для тестов, если стоит задача показывать ошибки (в пхп как никогда часто), то опять соглашусь!, тут главное чтоб обертка не занимала больше времени чем сама конфетка...
 
[зы фибоначчи начинаются с 1,1 ..
по wiki я смотрел с 0 =)
ну наверное те, которые не делятся на ни одно из меньшего простого... или a%b != 0 тут конечно обратный цикл нужен.
Что то я не понял ( буду разбираться с факториалами
 
4 не является простым числом потому что делится на 2, 6 потому что делится на 2 и на 3 нужны только те числа которые ни на что не делятся! вот уж загадка...
сколько лет то тебе?
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху