<MyRusakov.ru />

Создание крупного проекта на Java с нуля

Создание крупного проекта на Java с нуля

Данный курс научит Вас создавать крупные проекты на Java грамотно и быстро. В курсе Вы увидите создание большой и сложной программы на Java абсолютно с нуля.

В начале курса у нас будет только идея, а в конце готовый продукт, который можно использовать в практических целях.

В рамках упражнений курса Вы параллельно со мной будете создавать свою большую программу на Java, что даст Вам необходимую практику, после которой для Вас уже не будет разницы, какого размера создавать программы.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Форум сайта MyRusakov.ru

Двумерные массивы из курса
08.09.2013 15:22:38 Двумерные массивы из курса Сообщение #1
Error 404

Error 404

Продвинутый

Продвинутый

Дата регистрации:
28.07.2013 16:04:47

Сообщений: 48

Добрый день. Михаил, из Вашего курса по php и mysql о двумерных массивах, Вы, по мимо основного задания, рекомендовали написать скрипт который бы считал среднее арифметическое число двумерного массива, вот что у меня получилось:

function arifIntDoubleArray($array){
for($i = 0; $i < count($array); $i++){
for($j = 0; $j < count($array[$i]); $j++){
// Подчет суммы всех чисел во вложенных массивах
$sum += $array[$i][$j];
// Количество итерации цикла
$count += count($array[$i][$j]);
if($i + 1 == count($array) && $j + 1 == count($array[$i]))
// Деление суммы всех чисел на количество итерации раз вложенного цикла
$sum = $sum / $count;
}
}
return $sum;
}

Все работает, но вот из-за того что $i и $j получают начальное значение 0 (чтобы перебирать массив начиная с индекса 0)
приходиться 1. создавать

// Количество итерации цикла
$count += count($array[$i][$j]);

для дальнейшего деления на него.
2.писать условие

if($i + 1 == count($array) && $j + 1 == count($array[$i]))

где к переменным $i и $j прибавлять 1, для того чтобы $i и $j были равны количеству длине массива.
Скажите, вот это вот все приветствуется или решается по другому? Если по другому, то как? Спасибо.
Профиль Ответить
10.09.2013 10:50:35 Двумерные массивы из курса Сообщение #2
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Да, всё так. Разумеется, так как индексация у нас идет с нуля, нужно принимать меры и добавлять это смещение на единичку.
Профиль Ответить
10.09.2013 15:27:18 Двумерные массивы из курса Сообщение #3
Error 404

Error 404

Продвинутый

Продвинутый

Дата регистрации:
28.07.2013 16:04:47

Сообщений: 48

И вот еще Вам вопрос. по окончанию первого раздела Вашего курса (основы) Вы даете задание написать функцию которая бы принимала массив с любыми числами и сортировала их, в зависимости от булевской переменой, по возрастанию или по убыванию. как это реализовать? дополнительных знаний точно не нужно применять? просто потратил уже более 4 часов думая как сделать это, но к сожалению так и не пришел к тому методу который бы мог осуществить данные действия над массивом.
Профиль Ответить
11.09.2013 17:51:20 Двумерные массивы из курса Сообщение #4
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

А в чём именно тут сложность? С проверкой условия этой булевской переменной, я полагаю, проблем быть не должно. Остается просто сделать два варианта сортировки.
Профиль Ответить
12.09.2013 04:17:59 Двумерные массивы из курса Сообщение #5
Error 404

Error 404

Продвинутый

Продвинутый

Дата регистрации:
28.07.2013 16:04:47

Сообщений: 48

Вот именно с сортировкой проблемы. 1 - это сохранять ли индексы. 2 - весь процесс сортировки должен происходить с одним циклом вложенный в другой, наверное так:


function sortArray($array, $boolean = true){
if($boolean == true){
for ($i = 0; $i < count($array); $i++){
for($j = 0; $j < count($array); $j++){
if(){

}else{

}
}
}
}
}

Что тогда должно быть в условии?

if($array[$i] > $array[$j]){
$array[$i] = $array[$j];
}

а массив выглядит допустим так:

$list = array(7,3,5,-2);

Тогда с тем условием что написано будет находить следующее меньшее число в цикле и записывать его на место предыдущего, то есть 7-ку поменяет на 3-ку сохраняя индекс. и отсюда вопрос, как в этом цикле, 2-м, перебрать весь массив, чтобы вместо 7-ки получи -2, то есть получили мы следующее меньшее число, оно бралось и проверялось на остальные значения массива? запускать еще один цикл? и куда передать значения, в моем случае, 7-ку? в новый массив? код писал тут и не тестировал его, надеюсь понятно.
Просмотрев 1 урок 2-го раздела смог не много понять принцип сортировки

function delRepeatElementArray($array){
if(is_array($array)){
foreach ($array as $k => $v) {
foreach ($array as $key => $value){
if($k != $key && $k < $key){
if($v == $value){
unset($array[$key]);
}
}
}
}
}else return false;
return $array;
}

но к сожалению это ничем не помогло решить проблему.
Профиль Ответить
12.09.2013 20:23:55 Двумерные массивы из курса Сообщение #6
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Вот и разберитесь для начала просто с сортировкой. Пусть этот условный оператор запускает два совершенно разных метода сортировки, для начала.
Профиль Ответить
13.09.2013 02:32:47 Двумерные массивы из курса Сообщение #7
Error 404

Error 404

Продвинутый

Продвинутый

Дата регистрации:
28.07.2013 16:04:47

Сообщений: 48

без рекурсии справится тут можно?
Профиль Ответить
13.09.2013 18:07:44 Двумерные массивы из курса Сообщение #8
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Да, конечно.
Профиль Ответить
30.08.2016 13:19:21 Двумерные массивы из курса Сообщение #9
WarBear

WarBear

Новичок

Новичок

Дата регистрации:
30.08.2016 12:57:55

Сообщений: 1

Среднее арифметическое двумерного массива:

$arr = array(array(11, 12, 13, 14, 15),
array(21, 22, 23, 24, 25),
array(31, 32, 33, 34, 35),
array(41, 42, 43, 44, 45),
array(51, 52, 53, 54, 55));

function arifmArray($arr) {
 for ($i = 0; $i < count($arr) ; $i++) { //Перебираем массив первого уровня
 $c+=count($arr[$i]);//Подсчёт количества элементов в массиве

 for ($j = 0; $j < count($arr[$i]); $j++) { //Перебираем массив второго уровня
echo "Элемент $i$j ". $arr[$i][$j]." ";
$sum2 += $arr[$i][$j];// Подчет суммы всех чисел во вложенных массивах
 }
 echo "<table></table>";
 }
 $arifm = $sum2/$c;
 echo "Количества элементов в массиве равно ".$c."<br />";//Kоличества элементов в массиве = 25
 echo "Сумма всех чисел массива равна ".$sum2."<br />";//Сумма = 825
 echo "Среднее арифметическое массива равно ".$arifm."<br />";
}
arifmArray($arr);


Сделал по своему. Надеюсь данное решение правильно?.
Профиль Ответить