Цикл for

Статус
В этой теме нельзя размещать новые ответы.

Vladson

Сильнобухер
Что то я не понял
У тебя y = 4 и с каждым шагом отнимается на единицу, а в условии надо чтоб стало больше 4-х, внимание вопрос... сколько раз надо отнять от 4-х единицу, чтоб стало больше четырёх ?
 

WMix

герр M:)ller
Партнер клуба
зачем его останавливать? цикл идет от 0 (или 1) до высоты ... если мы отнимим половину высоты от того что дает нам цикл, получим от минус половины до половины (дели для начала четное числ)... дальше берем по модулю то что получилось....
 

USA

Новичок
У тебя y = 4 и с каждым шагом отнимается на единицу, а в условии надо чтоб стало больше 4-х, внимание вопрос... сколько раз надо отнять от 4-х единицу, чтоб стало больше четырёх ?
где то 9 раз ?
у меня получается от 4 до 1040062 ) шось я нуб,завтра что то подумаю
 

WMix

герр M:)ller
Партнер клуба
главное не меняй переменную цикла, создай новую, не жалей памяти!
 

USA

Новичок
нужно сделать, что б шло 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
.
.
.
 

WMix

герр M:)ller
Партнер клуба
если мы отнимим половину высоты от того что дает нам цикл, получим от минус половины до половины (дели для начала четное числ)... дальше берем по модулю то что получилось....
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 года о которых ты рассказывал, ты что писал вообще?
 

USA

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

WMix

герр M:)ller
Партнер клуба
USA
его задачка это обьяснение что за магия таится за каждым числом

первая задачка практически везде это числа фибоначи, или другая которую стоит тебе решить это простые числа также задачка на факториал...
найти первые 20 простых чисел и решить 10! после вернемся к ромбику
 

USA

Новичок
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,
 

WMix

герр M:)ller
Партнер клуба
ну наверное те, которые не делятся на ни одно из меньшего простого... или a%b != 0 тут конечно обратный цикл нужен.

зы фибоначчи начинаются с 1,1 ..
 

Vladson

Сильнобухер
$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 в зависимости от числа, но это уже совсем фетиш...
 

WMix

герр M:)ller
Партнер клуба
да согласен, еще рамок не хватает
PHP:
isset($_GET['Fn']) && ctype_digit($_GET['Fn']) && $_GET['Fn'] > $min && $_GET['Fn'] < $max
 

Vladson

Сильнобухер
Рамки я бы отдельной строкой проверял, т.е сначала получаем число (и проверяем число ли это), а потом проверяем подходит ли оно нам (чисто чтоб выработать привычку проверять все числа одинаково, а уже то что касается конкретно этого случая проверять отдельно)

Да и код проще читаться будет (для командной разработки чаще более важна "читабельность" кода чем краткость и всякие прочие джедайские техники, лучше привыкать заранее, а всякие "оптимизации" это уже вопрос второй, большинству рядовых разработчиков это никогда не понадобится, а когда понадобится оно само как-то придёт...)
 

WMix

герр M:)ller
Партнер клуба
не хотелось отвлекаться от основной программки, но написать простой каркас для тестов, если стоит задача показывать ошибки (в пхп как никогда часто), то опять соглашусь!, тут главное чтоб обертка не занимала больше времени чем сама конфетка...
 

USA

Новичок
[зы фибоначчи начинаются с 1,1 ..
по wiki я смотрел с 0 =)
ну наверное те, которые не делятся на ни одно из меньшего простого... или a%b != 0 тут конечно обратный цикл нужен.
Что то я не понял ( буду разбираться с факториалами
 

WMix

герр M:)ller
Партнер клуба
4 не является простым числом потому что делится на 2, 6 потому что делится на 2 и на 3 нужны только те числа которые ни на что не делятся! вот уж загадка...
сколько лет то тебе?
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху