Conversation
DisterDE
left a comment
There was a problem hiding this comment.
Первым делом скажу, что прошлый пулл реквест ты зря закрыла.
Его нужно было мержить.
Тогда бы в этот пулл не попали изменения по гитигнору и прошлому дз.
Так же стоит добавить, что ветка текущего урока была создана от ветки прошлого, что тоже неправильно. Новые ветки мы создаем ТОЛЬКО ОТ МАСТЕРА.
После окончания работы над этим дз нажми merge, а не close pull request.
С 5 и 6 заданием есть некоторые проблемы.
В основном с 6.
5ое решено, но ты его посчитала за компьютер.
Последние два имеет смысл доработать, если будут идеи.
В остальном всё как обычно. Доработки по комментариям крайне рекомендуются.
В целом молодец!
| int maxSalary = 0; | ||
| int minSalary = 200001; |
There was a problem hiding this comment.
Имело смысл инициализировать оба значения нулями или значением из arr[0]
| } | ||
| System.out.println("Минимальная сумма трат за день составила " + minSalary + " рублей. Максимальная сумма трат за день составила " + maxSalary + " рублей."); | ||
| //Task3 | ||
| float averageSalary = sumMonth / 30f; |
| arr2[0][0] = 1; | ||
| arr2[0][2] = 1; | ||
| arr2[1][1] = 1; | ||
| arr2[2][0] = 1; | ||
| arr2[2][2] = 1; |
There was a problem hiding this comment.
А если поле станет 4х4?
Нет, это нужно делать в цикле.
Если посмотреть на индексы, станет видно, что последовательность индексов присутствует.
Реализуй это.
| int[] arr4 = {1, 2, 3, 4, 5}; | ||
| System.out.println(Arrays.toString(arr3)); | ||
| for (int r = 0; r < arr3.length; r++) { | ||
| if (arr3[r] != arr4[r]) { | ||
| arr3[r] = arr4[r]; | ||
| } | ||
| } |
There was a problem hiding this comment.
Здесь нужно arr4 создать пустым, а уже в цикле его задать в том виде, в котором ты его создала.
| float y = arr5.length / 2f; | ||
| for (int i = 0; y > i; ) { | ||
| if (arr5[i] != arr5[z]) { | ||
| x = arr5[i]; | ||
| arr5[i] = arr5[z]; | ||
| arr5[z] = x; | ||
| } | ||
| z--; | ||
| i++; | ||
| } |
There was a problem hiding this comment.
Здесь бы лучше подошел цикл while (x < z), а от y можно было бы избавиться.
| if (arr6[l] + arr6[m] != -2) { | ||
| m--; | ||
| } else { | ||
| System.out.println(arr6[l] + " " + arr6[m]); | ||
| m--; | ||
| break; | ||
| } |
There was a problem hiding this comment.
В этом блоке m-- повторяется в обоих случаях.
Следовательно, условия для этого не требуются.
m-- нужно вынести за цикл.
Если мы это сделаем, то блок if будет пустым, значит он не нужен.
Следовательно, нам нужно вместо else написать
if (arr6[l] + arr6[m] == -2) и поместить в этот блок то, что сейчас в else (кроме m--, мы это выносим за условные блоки)
Т.е.
if (arr6[l] + arr6[m] == -2) {
System.out.println(arr6[l] + " " + arr6[m]);
break;
}
m--;
if (m - l == 1) {
m = arr6.length - 1;
l++;
}
| for (int l = 0; p - l > 0; ) { | ||
| if (arr7[l] + arr7[p] != -2) { | ||
| p--; | ||
| } else { | ||
| System.out.println(arr7[l] + " " + arr7[p]); | ||
| p--; | ||
| } | ||
| if (p - l == 1) { | ||
| p = arr7.length - 1; | ||
| l++; | ||
| } | ||
| } | ||
| } |
There was a problem hiding this comment.
Что по алгоритму в целом.
Твой код в текущем варианте находит первую пару за 12 шагов. Все пары за 37 шагов.
Его можно написать так, что он будет первую находить за 5 шагов, а все пары за 7 шагов.
Идея с головой и хвостом отличная и именно с ней решается эта задача, но нужно подумать ещё раз.
Возможно, ты сможешь найти решение.
No description provided.