|
|
|
|
|
для: Mefisto84
(16.12.2007 в 19:42)
| | с возрастами так правильнее работает
<?php
for ($i = 0; $i < 150; $i++)
{
switch($i)
{
case ($i % 100) < 21 && ($i % 100) > 4 :
echo $i . ' лет<br>';
break;
case ($i % 10) == 1:
echo $i . ' год<br>';
break;
case ($i % 10) == 0:
echo $i . ' лет<br>';
break;
case ($i % 10) < 5:
echo $i . ' года<br>';
break;
default:
echo $i . ' лет<br>';
break;
}
}
| вычислений только больше получается походу | |
|
|
|
|
|
|
|
для: kasmanaft
(16.12.2007 в 08:06)
| | to udpn
А разве задача про возраст пользователя не конкретная?
kasmanaft
:-) Спасибо конечно.
Действительно 60+70=130 я и не обратил внимания.
Все это понятно, но просто не хотелось применять такие громоздкие конструкции, как говорил раньше - хотелось сделать все это проще. Но раз такой возможности нет, значит буду извращаться. :-) | |
|
|
|
|
|
|
|
для: mihdan
(15.12.2007 в 12:12)
| | >> То что просили то и написал, а что что-то не так?
Нужно объяснить, что так делать не нужно :-)
<?php
for ($i = 1; $i < 150; $i++) {
$age = (string)$i;
$len = strlen($age) ;
if ($len == 1 || $len == 2 && $age[0] !== "1" || $len > 2)
switch ($age[$len-1]) {
case '1' : $age .= ' год'; break;
case '2' : $age .= ' года'; break;
case '3' : $age .= ' года'; break;
case '4' : $age .= ' года'; break;
default : $age .= ' лет'; break;
}
else $age .= ' лет';
echo $age, "<br />";
}
?>
|
>>Почему при таком варианте решения на входную $i=1 на выходе получаем "Да"? По идее вообще ничего не должно быть? Так же, почему на входные $i=59 получаем ответ "нет"? по идее же должно быть "Да"?
Это из-за array_merge(), она сдвинула ключи... посмотрите с помощью print_r()
PS 60+70 = 130 ;-) | |
|
|
|
|
|
|
|
для: sim5
(15.12.2007 в 19:12)
| | а давайте все дружно попросим автора указать конкретную задачу? надоел весь этот огород.
зы это нужно не столько нам, сколько ему самому, чтобы понять че ему надо | |
|
|
|
|
|
|
|
для: Mefisto84
(15.12.2007 в 19:07)
| | Зачем вам десятки? Если возраст более 4 и менее 21 то это "лет" (это исключение из правил:)). В остальных случаях забирайте только младший разряд возраста и проверяйте по нему, ну неужели это сложно? | |
|
|
|
|
|
|
|
для: mihdan
(15.12.2007 в 12:12)
| | to sim5
Нет, не решение, так как во всех десятках есть исключения: 31 год, 32 года, 35 лет и так далее.
to mihdan
Ну что-то похожее, но тоже не совсем. Почему при таком варианте решения на входную $i=1 на выходе получаем "Да"? По идее вообще ничего не должно быть? Так же, почему на входные $i=59 получаем ответ "нет"? по идее же должно быть "Да"? | |
|
|
|
|
|
|
|
для: kasmanaft
(14.12.2007 в 19:29)
| | То что просили то и написал, а что что-то не так? | |
|
|
|
|
|
|
|
для: mihdan
(14.12.2007 в 18:42)
| | Ну что Вы советуете? | |
|
|
|
|
|
|
|
для: Mefisto84
(14.12.2007 в 18:21)
| |
<?
$i = 120;
$array1 = array_fill(10, 50, 'Да');
$array2 = array_fill(60, 70, 'Нет');
$array3 = array_fill(120, 10, 'Не знаю');
$array = array_merge($array1, $array2, $array3);
echo $array[$i];
?>
|
| |
|
|
|
|
|
|
|
для: Mefisto84
(14.12.2007 в 18:21)
| | 1 - это "год", от 2 по 4 это "года", все остальное "лет". Вот и все решение.
PS. Только в втором десятке исключение. | |
|
|
|
|