|
|
|
| Нужна помощь с задачей по массивам. Совсем ничего не понятно, поэтому прошу помощи.
Basic
Задачка такая:
В одномерном массиве, состоящем из 20 целых элементов (значения элементов массива задать случайными числами из интервала [-5, 5]), вычислить произведение элементов массива с четными номерами. Преобразовать массив таким образом, чтобы сначала располагались все положительные элементы массива, а потом — все отрицательные.
P.S. Если можете помочь помогите, не нужно нравоучений вроде " работать мы тоже за вас будем?".
Хочется действительно разобраться. | |
|
|
|
|
|
|
|
для: 1234AL
(09.12.2012 в 15:37)
| | >не нужно нравоучений вроде " работать мы тоже за вас будем?".
а) проходом в цикле
б) использовать функции для работы с массивами
Выбирайте. | |
|
|
|
|
|
|
|
для: confirm
(09.12.2012 в 16:19)
| | ??? | |
|
|
|
|
|
|
|
для: 1234AL
(09.12.2012 в 18:38)
| | Вам чего надо? Вы не знаете что такое циклы или что такое произведение чисел? | |
|
|
|
|
|
|
|
для: confirm
(09.12.2012 в 19:11)
| | по моему знания что такое произведение не достаточно что бы написать программу | |
|
|
|
|
|
|
|
для: 1234AL
(09.12.2012 в 19:33)
| | Программа, это понятие гораздо шире, чем конкретная задача, да еще такая простая.
Вам задают вопрос - чего вам надо, разъяснений? Каких и чего?
Я вам написал, в соответствии с вашей просьбой "без нравоучений", как можно решать такую задачу - либо проход в цикле, который переберет все элементы массива, и сделает необходимое, либо без цикла, используя функции для работы с массивами.
Вы вообще ничего не знаете? В таком случае сперва надо изучить хотя бы минимум, чтобы хоть что-то сделать.
Вы хотите чтобы вам написали готовый код решения этого? В таком случае пишите прямо - "напишите ....". | |
|
|
|
|
|
|
|
для: confirm
(09.12.2012 в 19:41)
| | >Вы вообще ничего не знаете?
Ну напишите раз вы знаете. Для меня эта задача не является простой, а совсем даже наоборот. Первый раз сталкиваюсь с массивами, поэтому я действительно ничего не знаю. | |
|
|
|
|
|
|
|
для: 1234AL
(09.12.2012 в 19:49)
| | Конечно знаю, я не знаю чего вы не знаете, и чего хотите, а потому и такой диалог.
О массивах можно было бы и прочесть. Коли вы "сталкивались" с другими типами, значит как-то их изучали, а значит и с изучением типа массив не должно возникать сложностей. Из этого же следует, что вы должны знать что такое цикл, и какие они бывают.
Кроме изучения типа массив полезно изучать и функции для работы с массивами.
В простейшем случае вам надо обойти ваш массив в цикле, и проверяя текущий элемент его выполнять операции:
а) если значение элемента массива положительное, то поместить его в массив с индексом 0, в массив ранее объявленный (до цикла);
б) если значение элемента массива отрицательное, то поместить его в массив с индексом 1, в массив ранее объявленный;
в) если текущая итерация цикла четная, то умножить значение элемента массива на ранее объявленную переменную (до цикла), присвоив результат этой переменной.
После окончания цикла сложить массивы ранее объявленного массива, то есть его ключи 0 и 1, таким образом получите отсортированный по значению массив. А переменная объявленная до цикла будет содержать произведение четных элементов массива источника.
Такое вы можете написать? | |
|
|
|
|
|
|
|
для: confirm
(09.12.2012 в 20:10)
| | Ну если посидеть над этим 2-3 дня, может и напишу. Жаль нет времени. Ладно буду пробовать | |
|
|
|
|
|
|
|
для: 1234AL
(09.12.2012 в 20:20)
| | Ясно, очередной студент.
1 вариант (для мозгов):
<?
$src = array(3,1,2,-3,4,-2,-1,2,3,5,5,-5,-1,2,3,1,-2,-1,5,3);
$p = 1; //произведения элементов массива
$sort = array(); //отсортированный массив
foreach($src as $k=>$v) {
if($v>0) $sort[0][] = $v; //если положительное
else $sort[1][] = $v; //если отрицательное
if(!($k & 1)) $p *= $v; //если четный элемент, то умножение
}
echo 'Product of even elements = '.$p.'<br>';
$sort = array_merge($sort[0], $sort[1]);
echo 'The sorted array:<br>';
print_r($sort); //выводим отсортированный массив
|
2 вариант (php обладает готовыми функциями для такой задачи):
<?
//получаем произведение четных элементов
$p = array_product(array_intersect_key($src, array_flip(range(0,20,2))));
echo 'Product of even elements = '.$p.'<br>';
echo 'The sorted array:<br>';
rsort($src); //сортируем массив в убывающем порядке
print_r($src); //выводим отсортированный массив
|
| |
|
|
|
|
|
|
|
для: confirm
(09.12.2012 в 21:24)
| | ух ты... | |
|
|
|
|
|
|
|
для: confirm
(09.12.2012 в 21:24)
| | Все мы студенты, в какой-то степени ) | |
|
|
|