Помогите пожалуйста. Допустим есть массив $a=array(1,4,0,6,0,6,0), как преобразовать массив так чтобы сначала были элементы равные нулю , а потом все подряд
Помогите пожалуйста. В одномерном массиве, состоящем из n вещественных элементов, вычислить: минимальный элемент массива; сумму элементов массива, расположенных между первым и последним положительными элементами. Преобразовать массив таким образом, чтобы сначала располагались все элементы, равные нулю, а потом — все остальные. Код вроде написал но он недочетами,помогите чем можете!! <?php $mas=$_POST['mas']; $lab3=explode("/", $mas); $min=min($lab3); $key=array_search($min, $lab3); for($i=0; $i<sizeof($lab3); $i++) { if($lab3[$i]>0) { $min1=$i;//находим первый положительный элемент break; } } for($i=0; $i<sizeof($lab3); $i++) { if($lab3[$i]>0) { $max1=$i;//находим поледний положительный элемент(индекс) } } for($i=$min1; $i<=$max1; $i++) { $summa+=$lab3[$i]; // сумма элеметов массива, расположенных между первым // и последним положительными элементами } sort($lab3);//сортируем массив по возрастанию print_r($lab3); echo "<p>минимальный элемент массива:"."[".$key."]=>".$min; echo "<p>первый положительный элемент:"."[".$min1."]"."=>".$lab3[$min1]; echo "<p>поледний положительный элемент:"."[".$max1."]"."=>".$lab3[$max1]; echo "<p>сумма элеметов массива, расположенных между первым и последним положительными элементами==".$summa." "; print_r($lab3); ?>
PHP: $a = array(1,4,0,6,0,6,0); $tmp0 = []; $tmp1 = []; foreach( $a as $v ){ if( $v == 0 ){ $tmp0[] = $v; }else{ $tmp1[] = $v; } } $result = array_merge( $tmp0, $tmp1 ); // или $tmp0 + $tmp1
ему как раз и надо нули в начале пройди циклом по массиву, посчитай нули и удали их. если надо - можно скопить их в другой массив и удалить из того. один проход по массиву и задача решена
Все сделал. Спасибо всем за помощь, особенно TeslaFeo и igordata помогли. PHP: <?php $a=array(1,5,0,6,-4,7,0,-8,-4,0,4); for($i=0; $i<count($a);$i++) { if($a[$i]==0) { $n[$i]=0; } else if($a[$i]>0) { $p[$i]=$a[$i]; } else { $o[$i]=$a[$i]; } } $s=array_merge($n, $p, $o); ?>
молодец! это отличный урок - обработка массивов. Умея обрабатывать массивы - можно обрабатывать массивы. =) А так как массивов везде дофига - это базовый навык в работе программиста. правда я предпочитаю цикл foreach
Дана целочисленная прямоугольная матрица. Определить количество столбцов, не содержащих ни одного нулевого элемента. Характеристикой строки целочисленной матрицы назовем сумму ее положительных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с ростом характеристик.
Автор, покажи свои наработки и скажи что конкретно не можешь сделать в этом задании, иначе тема будет перенесена в "Сделайте за меня".
Дана целочисленная прямоугольная матрица. Определить: сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент; номера строк и столбцов всех седловых точек матицы. Примечание. Матрица А имеет седловую точку aij, если аij является минимальным элементом в i-й строке и максимальным в j-м столбце.
Однако, вас тут уже двое. Слил все ваши ветки в одну. Сессия вроде не скоро, чего это вы понаплыли-то, вычислители целочисленных матриц?
берёшь учебник аль гебры; листаешь до матриц; читаешь, как там это делаешься, по шагам; переносишь это в код. Пройти по всем строкам или там ячейкам можно циклами. Учись работать с массивами.