<?php
function ch($num,$str){
$res=str_split($str);
$i=0;
while ($i < count($num)){
$cn=$num[$i]-1;
$res[$cn]=strtoupper($res[$cn]);
$i++;
}
return implode("",$res);
}
?>
наркоманы млять
PHP код:
<?php
function ch($num,$str){
foreach($num as $key => $value)
$str[$value-1] = strtoupper($str[$value-1]);
return $str;
}
?>
39:
Выведет 0
Я не знаю почему так, но думаю из-за следующего.
Все происходит из-за динамического определения типа переменной.
ноль вначале свидетельствует что значение переменной - восьмеричное число, но так как после нуля идет 8, чего в восмеричном представлении быть не может, то число превращается в ноль.
Еще раз повторю, что я не знаю почему так, но с другими системами счисления не получилось добиться такого результата. в десятично и шестнадцатиричном все время ругается так:
Цитата:
Parse error: syntax error, unexpected T_STRING
А вообще я просто не знаю где об этом можно нормально почитать. Отсюда и все проблемы
Первый аргумент - массив который надо плющить, а второй - куда все запишется ( передается указатель на массив, т.е. он должен быть заранее определен )
Задача 39:
восьмеричные числа имеют следующее правило:
0[0-7]+
ноль впереди и дальше числа от 0 до 7 ( не выше - на то они и восьмеричные числа ). все что выше == 0
Поэтому эта программа выведет 0. Чтобы вывести 8 нужно написать: 010
По поводу задачи 38 - думаю gisTy норм решение дал...
Последний раз редактировалось Van Bekannt; 19.09.2009 в 23:40..
function ch($num,$str){
foreach($num as $value)
if($value<strlen($str))
$str[$value-1] = strtoupper($str[$value-1]);
return $str;
}
во первых там $key в foreach не нужен если на то уже пошло... и небольшой проверки на то что если значение в массиве больше чем букв в строке тоже как бы не мешало