PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (106): В начало « ... 76 77 78 79 [80] 81 82 83 84 ... » В конец
Найдено сообщений: 1581
Строитель
Отправлено: 22 Января, 2017 - 15:48:46 • Тема: Циклы и массивы • Форум: Вопросы новичков
Ответов: 16 Просмотров: 899
Stibaslo пишет: результат расчета для этих данных - 3 выдает?
Stibaslo , да, результат равен 3. Прокомментировал предыдущий код Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
$arr_1 = [ 0. 2, 0. 5, 0. 6, 0. 8, 0. 7] ;
$arr_2 = [ 0. 3, 0. 2, 0. 1, 0. 3, 0. 7] ;
echo '<pre>' ; var_dump ( bar
( $arr_1 , $arr_2 ) ) ; echo '</pre>' ;
function foo( & $arr ) {
static $sum ;
// Извлечь первый элемент из массива
// И сохранить его значение
$sum += $item ;
// Если значение переменой $sum меньше 1
if ( $sum < 1 ) {
// Повторить извлечение следующего элемента
// с последующим его сохранением (рекурсия)
return foo( $arr ) ;
}
return $sum ;
}
function bar( $arr_1 , $arr_2 ) {
static $m ;
// Если значение foo($arr_1) больше 1,
// и если значение foo($arr_2) больше 1
// увеличиваем на единицу переменную $m
foo( $arr_1 ) < 1 && foo( $arr_2 ) < 1 ?: $m ++;
// Если в массивах $arr_1 и $arr_2 остались значения,
// повторяем увеличение (если условия соответствуют) счётчика $m
return bar( $arr_1 , $arr_2 ) ;
}
return $m ;
}
Stibaslo пишет: С предыдущим вариантом нельзя добавить реализацию такого варианта:
Думаю можно. Попробую, и позже отпишусь.
(Добавление)
Stibaslo пишет: При повторном исполнении 2-го варианта выскакивает ошибка - Cannot redeclare foo() (previously declared in D:\......., как поправить?
Вы наверное описание функции прописали в тело цикла?
(Добавление)
Stibaslo , и ещё для ясности напишите мне, какое должно быть значение в переменной $m при таких значениях массивов:
$arr_1 = [0.2, 0.5, 0.6, 0.8, 0.7]; // 2.8
$arr_2 = [0.3, 0.2, 0.1, 0.3, 0.7]; // 1.6
Строитель
Отправлено: 22 Января, 2017 - 12:38:29 • Тема: Циклы и массивы • Форум: Вопросы новичков
Ответов: 16 Просмотров: 899
Stibaslo , проверьте этот вариант Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
$arr_1 = [ 0. 2, 0. 5, 0. 6, 0. 8, 0. 7] ;
$arr_2 = [ 0. 3, 0. 2, 0. 1, 0. 3, 0. 7] ;
echo '<pre>' ; var_dump ( bar
( $arr_1 , $arr_2 ) ) ; echo '</pre>' ;
function foo( & $arr ) {
static $sum ;
$sum += $item ;
if ( $sum < 1) {
return foo( $arr ) ;
}
return $sum ;
}
function bar( $arr_1 , $arr_2 ) {
static $m ;
foo( $arr_1 ) < 1 && foo( $arr_2 ) < 1 ?: $m ++;
return bar( $arr_1 , $arr_2 ) ;
}
return $m ;
}
(Добавление)
Stibaslo , если этот вариант подходит, и если вам нужны будут комментарии в коде, то я их пропишу.
Строитель
Отправлено: 21 Января, 2017 - 22:12:58 • Тема: Циклы и массивы • Форум: Вопросы новичков
Ответов: 16 Просмотров: 899
Stibaslo пишет: прибавляет m++
А переменная $m должна увеличиваться только один раз за всё время выполнения скрипта?Stibaslo пишет: Вот только получается второй цикл всегда просчитывает суммы до единицы
На счёт второго цикла - вы изначально вроде бы так и описали алгоритм (пункт №4)
Строитель
Отправлено: 21 Января, 2017 - 20:38:23 • Тема: Циклы и массивы • Форум: Вопросы новичков
Ответов: 16 Просмотров: 899
Stibaslo , вероятно так? Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
$arr_1 = [ 0. 2, 0. 5, 0. 6, 0. 8, 0. 7] ;
$arr_2 = [ 0. 3, 0. 2, 0. 1, 0. 3, 0. 7] ;
$m = 0 ;
$sum_1 = 0 ;
$sum_2 = 0 ;
foreach ( $arr_1 as $item_1 ) {
if ( $sum_1 >= 1) {
foreach ( $arr_2 as $item_2 ) {
if ( $sum_2 >= 1) {
$m ++;
break ;
}
$sum_2 += $item_2 ;
}
}
$sum_1 += $item_1 ;
}
echo '<pre>' ; var_dump ( $m , $sum_1 , $sum_2 ) ; echo '</pre>' ; /*
$m == int(1)
$sum_1 == float(2.8)
$sum_2 == float(1.6)
*/
Строитель
Отправлено: 21 Января, 2017 - 15:35:31 • Тема: Определение браузера и запуск страниц. • Форум: Вопросы новичков
Ответов: 5 Просмотров: 334
aiming Спойлер (Отобразить ) PHP:
скопировать код в буфер обмена
//1.Список подходящих браузеров(firefox,iceweasel,galeon).
$browsers = [
'firefox' ,
'iceweasel' ,
'galeon'
] ;
//2. Определение браузера.
$ua = $_SERVER [ 'HTTP_USER_AGENT' ] ;
} ) ;
//3. Если браузер не соответствует списку
if ( ! $browser ) {
include 'abracadabra.html' ;
} else { //4. Если браузер соответствует списку
include 'index.html' ;
}
Страниц (106): В начало « ... 76 77 78 79 [80] 81 82 83 84 ... » В конец
Powered by ExBB FM 1.0 RC1. InvisionExBB