Этот урок набрал набрал достаточно большое количество
комментариев и дальнейшее его комментирование отключено.
Если вы хотели убедиться в правильности выполнения ДЗ или у вас возник вопрос по уроку,
посмотрите ранее добавленные комментарии, кликнув по кнопке ниже. Скорее всего вы найдете там то, что искали.
Если это не помогло - задайте вопрос в чате в телеграме - https://t.me/php_zone
А я не так делал, просто добавил $index и подсчитал его, это неправильно?
<?php
$carWeight = [
905,
1200,
1400
];
echo "Вес первой машины $carWeight[0] кг <br>
Вес второй машины $carWeight[1] кг <br>
Вес третьей машины $carWeight[2] кг <br>";
$sumCarWheight = 0;
foreach ($carWeight as $index => $wheight) {
$sumCarWheight += $wheight;
$sumCarIndex += $index;
}
echo 'Средний вес машин = ' . $sumCarWheight / $sumCarIndex . 'кг';
?>
а нее, это неправильно :( уже сам увидел ошибку, если так, то оно просто складывает не порядковые index, а их числовые значения, надо тогда наверно так $sumCarIndex = $index + 1; или использовать такое $sumCarIndex = ++$index;
<?php
$carWeight = [
905,
1200,
1400
];
echo "Вес первой машины $carWeight[0] кг <br>
Вес второй машины $carWeight[1] кг <br>
Вес третьей машины $carWeight[2] кг <br>";
$sumCarWheight = 0;
foreach ($carWeight as $index => $wheight) {
$sumCarWheight += $wheight;
$sumCarIndex = $index + 1;
}
echo 'Средний вес машин = ' . $sumCarWheight / $sumCarIndex . 'кг';
?>
Нет, неправильно. $sumCarIndex - сумма индексов, и она никак не соотносится с числом автомобилей, на которое нужно поделить сумму весов.
Вам просто повезло, что 0 + 1 + 2 = 3.
Если появится ещё один автомобиль то у вас уже будет 0 + 1 + 2 + 3 = 6.
Непонятно, для чего вам здесь переменная $count, переменные $countOfCars и $sumOfSpeeds нужно определить перед циклом равными нулю. Иначе непонятно, что там за значения.
Это бессмысленно - каждый раз проверять в цикле условие, которое выполнится лишь в конце. Нужно просто добавить счётчик перед циклом и увеличивать его внутри цикла. Попробуйте ещё раз.
Ах да, начинать нумерацию элементов массива с 1 тоже не надо.
Хорошо, но было бы лучше не полагаться на индексы массива, а сделать переменную $count = 0 перед циклом. И затем в каждой итерации увеличивать её на 1. Так будет более надежно. На случай, если какой-нибудь хулиган явно укажет значения индексов в исходном массиве =)
может конечно забегаю вперед, но а если цикл двумерный, как пройти по всем индексам? допустим я не знаю что цикл двумерный, и пошел командой foreach, а оно показало Array и все...
Можно проверять текущее значение с помощью is_array. Если массив - запускать снова foreach. А еще можно сделать функцию рекурсивной - на вход принимает массив и перебирает все его элементы. Если элемент является массивом - вызывает себя же, передав в качестве аргумента этот элемент.
в данном случае программа сработает верно, но если например массив выглядит как:
$carsSpeeds = [
'0'=>'95',
'1'=>'140',
'3'=>'78'
];
Ну или другими словами в какой-то момент машина с индексом 2 сойдет с дистанции, весь алгоритм нарушиться.
Да и если просто добавить еще одну машину, все собьется!
Да, так правильнее. PHP просто так работет, что если для неициализированной переменной начать применять математические операции, то он посчитает её равной нулю. Однако, это затрудняет понимание кода и инициализировать переменные перед использованием стоит всегда.
я про это не знал,что автоматически присваивает 0...
только все равно не пойму зачем их обьявлять и присваивать нулевое значение,я подумал что в больших программах я бы рядом комментарий поставил,разве это не верно?
или же Вы все таки посоветуете нулевые обьявлять как 0 и потом использовать?
Так сразу понятно, чему они изначально равны. Не нужно надеяться на то, что язык программирования всегда верно будет определять начальное состояние переменных за программиста.
В ДЗ нужно было придумать другой способ вместо использования сount, я решил, что функцию count нужно написать самому вручную, это я и сделал, посмотрел что все ок, запустилось, и ушел радоваться)) оказывается реально можно было короче и логичнее все это сделать, вот второй вариант)
Тяжко, но работает вроде. Думал тоже с инкрементом сделать, но не сообразил сразу, как его задействовать. Предыдущий вариант, Draft'a, действительно крутой. Проверил на своём и не пришлось с индексами мудрить)
А что странного? Значения вы считали одни и те же, но в двух местах. Сейчас всё считается за один обход цикла - это более оптимальный вариант. Для увеличения значения на единицу лучше использовать использовать оператор инкремента:
Просто добавил переменную, к которой каждую итерацию добавляется единица.
$carsSpeeds = [
95,
140,
78
];
$sumOfSpeeds = 0;
$countOfCars = 0;
foreach ($carsSpeeds as $speed) {
$sumOfSpeeds += $speed;
$countOfCars += 1;
}
$averageSpeed = $sumOfSpeeds / $countOfCars;
echo 'Средняя скорость движения по трассе: ' . $averageSpeed;
А еще вопрос по уроку: в конце урока для функции count была выделена отдельная переменная $countOfCars = count($carsSpeeds). Нельзя ли сократить код на строку и записать вычисление средней скорости как: $averageSpeed = $sumOfSpeeds / count($carsSpeeds)?
Здрасьте! Подскажите пож, правильно понимаю ли, что foreach пробегает в массиве n-раз и внутри foreach переменный $count ++ оно у меня читает итерацию ну типа сколько раз пробежал в массиве, потом просто делим на $sumOfSpeeds да?
Есть урок по стилистике написания кода? Смотрю разные уроки и каждый пишет по своему, те же обозначения переменной, кто то использует вместо стиля верблюда, просто нижний прочерк _
А чего имена переменных такие? Они должны отражать то, для чего они нужны. Оперируйте терминами предметной области - скорость, сумма скоростей, средняя скорость. Переводите на английский и используйте полученные фразы для именования переменных.
А вообще, вам просто повезло, что у вас в примере 3 скорости, а не 4. Иначе бы вы обнаружили, что в переменной numbArrayZeroKey оказалось бы не 4, а 6! В коде явная ошибка, её нужно поправить.
Так а что в результате за число-то вообще? Нужно было посчитать среднюю скорость, не воспользовавшись функцией count.
$speedZero - что это за название. СкоростьНоль, дословный перевод. В этом месте:
$speedZero += $speedValue;
она перестает иметь нулевое значение. Соответственно, название никак не отражает действительность.
Потому что PHP исправляет эту ошибку за вас. Если включить показ ошибок уровня WARNING и NOTICE, то вы увидите ошибку, говорящую о том, что используется неопределенная переменная.
А я что сделал? :)
Ну разве что завернул это в функцию, а так - вроде ничего больше и не делал, кроме > завести еще одну переменную и внутри цикла увеличивать ее на единицу
Попытался связать это все с html и вводить скорость через браузер
<?php
//через браузер внести скорость 3х машин
// после нажатия кнопки должна быть рассчитана средняя скорость
$carsSpeeds = [
$a = htmlspecialchars($_POST['firstCar']),
$b = htmlspecialchars($_POST['secondCar']),
$c = htmlspecialchars($_POST['thirdCar'])
];
foreach ($carsSpeeds as $value) {
$summOfSpeed += $value;
$count++;
}
?>
<form action="" method="post">
Скорость первой машины <input type="number" name="firstCar">
Скорость второй машины <input type="number" name="secondCar">
Скорость третьей машины <input type="number" name="thirdCar">
<input type="submit">
</form>
<?= 'Средняя скорость всех машин: ' . $summOfSpeed / $count; ?>
Сначала нужно убдеиться, что такой ключ в массиве действительно есть (isset). Потом убедиться что это число (is_numeric). И только потом его можно использовать в вычислениях.
<?php
//через браузер внести скорость 3х машин
// после нажатия кнопки должна быть рассчитана средняя скорость
$carsSpeeds = [
$a = htmlspecialchars($_POST['firstCar']),
$b = htmlspecialchars($_POST['secondCar']),
$c = htmlspecialchars($_POST['thirdCar'])
];
foreach ($carsSpeeds as $value) {
if ($value > 0 and is_numeric($value) === true) {
$count++;
$summOfSpeed += $value;
}
}
?>
<form action="" method="post">
Скорость первой машины <input type="number" name="firstCar">
Скорость второй машины <input type="number" name="secondCar">
Скорость третьей машины <input type="number" name="thirdCar">
<input type="submit">
</form>
<?= 'Средняя скорость всех машин: ' . $summOfSpeed / $count; ?>
Не получилось проверить через isset, нашел другое решение.
$carsSpeeds = [
95,
140,
78
];
$sumOfSpeeds = 0;//задаем переменную суммы скоростей
$sumOfCars = 0; //задаем количество элементов (машин)
foreach ($carsSpeeds as $speed) {
$sumOfSpeeds += $speed; //прибавляем на каждом шаге скорость след.машины
$sumOfCars++; // прибавляем на каждом шаге по 1 авто
}
$averageSpeed = $sumOfSpeeds / $sumOfCars;
echo 'Средняя скорость движения по трассе: ' . $averageSpeed;
блин, точно! Всё гениальное просто! Артём, очень сильно извиняюсь, что сначала выкладываю задачу, а потом лезу в комменты и вижу, что Вы уже указывали на аналогичную ошибку! Исправляюсь:
Плохо. Зачем слепили все операции в одну строку?
Во-первых, не читается.
Во-вторых, работает не оптимальным образом - посчитать среднее можно одним действием после подсчета сумм скоростей и их числа. Вместо этого на каждом шаге производится деление.
Здравствуйте! А как можно обойти двумерный массив (И правильно ли я понимаю, что он выглядит не так, как обычный матричный двумерный массив, у него нет четкой структуры)? Прошу прощения, если это рассказывается в следующий лекциях.
// скорость каждой из машин
$carsSpeed = [
95,
140,
78
];
$sumOfSpeed = 0;
// узнаем общую скорость всех машин
foreach ($carsSpeed as $speed) {
$sumOfSpeed += $speed;
}
$countOfCars = 0;
// узнаем кол-во машин
foreach ($carsSpeed as $speed) {
$countOfCars++;
}
// узнаем среднюю скорость
$averageSpeed = $sumOfSpeed / $countOfCars;
echo 'Средняя скорость движения: ' . $averageSpeed;
Всё правильно)
А я не так делал, просто добавил $index и подсчитал его, это неправильно?
а нее, это неправильно :( уже сам увидел ошибку, если так, то оно просто складывает не порядковые index, а их числовые значения, надо тогда наверно так $sumCarIndex = $index + 1; или использовать такое $sumCarIndex = ++$index;
Нет, неправильно. $sumCarIndex - сумма индексов, и она никак не соотносится с числом автомобилей, на которое нужно поделить сумму весов.
Вам просто повезло, что 0 + 1 + 2 = 3.
Если появится ещё один автомобиль то у вас уже будет 0 + 1 + 2 + 3 = 6.
Оно все таки подсчитывает количество машин, а не сумму индексов. Даже если их будет больше чем 3. Можете проверить.
Не стоит полагаться на индексы для этой задачи. Ведь входной массив может оказаться таким:
Если нужно получить число элементов, нужно их посчитать, а не добывать это число из каких-то посторонних мест.
Если массив придет пустым, скрипт вообще вывалит ошибок. Потому что переменные не проинициализированы начальными значениями перед циклом.
Вы читали задание?
Непонятно, для чего вам здесь переменная $count, переменные $countOfCars и $sumOfSpeeds нужно определить перед циклом равными нулю. Иначе непонятно, что там за значения.
Высчитывание среднего арифметического внутри функции, правда с использованием count
Это бессмысленно - каждый раз проверять в цикле условие, которое выполнится лишь в конце. Нужно просто добавить счётчик перед циклом и увеличивать его внутри цикла. Попробуйте ещё раз.
Ах да, начинать нумерацию элементов массива с 1 тоже не надо.
Хорошо, но было бы лучше не полагаться на индексы массива, а сделать переменную $count = 0 перед циклом. И затем в каждой итерации увеличивать её на 1. Так будет более надежно. На случай, если какой-нибудь хулиган явно укажет значения индексов в исходном массиве =)
Что неправильно? Найти средний бал семестра
А вы настройте отладчик и сами всё поймёте. Если не получится - подскажу.
а в таком виде если?
<?php
$balls = [
'1semestr' => [54, 56, 78, 98, 56, 87],
'2semestr' => [55, 57, 79, 99, 95],
'3semestr' => ['1rubejka' => [56, 67, 89], '2rubejka' => [76, 78, 98, 90]],
];
$countOfsum_1sem = 0;
$sum_2sem = 0;
$countOfsum_2sem =0;
$sum_3sem_1rub = 0;
$countOfsum_3sem_1rub =0;
$sum_3sem_2rub = 0;
$countOfsum_3sem_2rub =0;
$sum_3sem = 0;
$sum_All = 0;
foreach ($balls['1semestr'] as $value_1sem) {
$sum_1sem += $value_1sem;
$countOfsum_1sem ++;
}
$avr1sem = $sum_1sem / $countOfsum_1sem;
echo "\n" . '1 семестр средняя ' . $avr1sem;
foreach ($balls['2semestr'] as $value_2sem) {
$sum_2sem += $value_2sem;
$countOfsum_2sem ++;
}
$avr2sem = $sum_2sem / $countOfsum_2sem;
echo "\n" . '2 семестр средняя ' . $avr2sem;
foreach ($balls['3semestr']['1rubejka'] as $value_1rub) {
$sum_3sem_1rub += $value_1rub;
$countOfsum_3sem_1rub++;
}
$avr_1rubejka = $sum_3sem_1rub / $countOfsum_3sem_1rub;
echo "\n" . '3 семестр 1 ру средняя ' . $avr_1rubejka;
foreach ($balls['3semestr']['2rubejka'] as $value_2rub) {
$sum_3sem_2rub += $value_2rub;
$countOfsum_3sem_2rub ++;
}
$avr_2rubejka = $sum_3sem_2rub / $countOfsum_3sem_2rub;
echo "\n" . '3 семестр 2 ру средняя ' . $avr_2rubejka;
$avr_3sem = ($avr_1rubejka + $avr_2rubejka)/2;
echo "\n" . '3 семестр средняя ' . $avr_3sem;
$sum_All = ($avr1sem + $avr2sem + $avr_3sem)/3;
echo "\n" . 'средний балл ' . $sum_All;
Домашка:
Тут ошибка. Если в массив добавится ещё одна скорость, значение $count станет равным 6, а вам нужно получить число 4.
Спасибо за ответ, сам бы не увидел и не догадался. Ну вот вроде исправил, добавил условие, если $keys >= 0, то прибавляем 1 в $count.
А для чего вам это условие?
Чтобы посчитать количество значений в массиве, только такая конструкция пришла на ум, и она работает) поправьте если не прав.
А что будет, если убрать if, но оставить в цикле строки
Что-нибудь изменится?
Отлично!
:)
Спс за урок!)
Отлично! Но вместо
лучше
Хорошо) Спасибо!
Супер =)
Отлично!
получается что если переменная создалась в цикле, то ее область виденья не ограничивается циклом?
Нет. В PHP не ограничивается.
Супер!
Лучше назвать count а не index.
может конечно забегаю вперед, но а если цикл двумерный, как пройти по всем индексам? допустим я не знаю что цикл двумерный, и пошел командой foreach, а оно показало Array и все...
Можно проверять текущее значение с помощью is_array. Если массив - запускать снова foreach. А еще можно сделать функцию рекурсивной - на вход принимает массив и перебирает все его элементы. Если элемент является массивом - вызывает себя же, передав в качестве аргумента этот элемент.
Отлично!
Length? Больше подходит Sum.
Это ж типа "Длина массива" а не сумма, я так думал.
Сорри, все правильно)
в данном случае программа сработает верно, но если например массив выглядит как:
$carsSpeeds = [
'0'=>'95',
'1'=>'140',
'3'=>'78'
];
Ну или другими словами в какой-то момент машина с индексом 2 сойдет с дистанции, весь алгоритм нарушиться.
Да и если просто добавить еще одну машину, все собьется!
Это что за дичь? Будут ошибки же.
Да хотел попробовать , что будет если внести в массив другие типы данных, как он будет считать, просто ради интереса)
Ну и как?)
Отлично
Мне кажется или я ошибаюсь, но $sumOfSpeeds переменная не объявлена, хотя считает все верно?
Вот так может быть правильнее? у ([email protected])
Да, так правильнее. PHP просто так работет, что если для неициализированной переменной начать применять математические операции, то он посчитает её равной нулю. Однако, это затрудняет понимание кода и инициализировать переменные перед использованием стоит всегда.
я про это не знал,что автоматически присваивает 0...
только все равно не пойму зачем их обьявлять и присваивать нулевое значение,я подумал что в больших программах я бы рядом комментарий поставил,разве это не верно?
или же Вы все таки посоветуете нулевые обьявлять как 0 и потом использовать?
Всегда объявляйте. Так более явно и наглядно. Иначе можно долго думать о том, где переменная объявлена и какое у неё сейчас значение.
Привет. Обрати внимание на комментарии внизу.
Отлично!
Так делать не нужно. Достаточно просто:
Отлично
Отлично! =)
$carNumber нужно перед циклом определить, как равную нулю.
Определил переменные равными нулю, но зачем - не совсем понял. Они, вроде бы, правильно определялись в самом цикле?
Так сразу понятно, чему они изначально равны. Не нужно надеяться на то, что язык программирования всегда верно будет определять начальное состояние переменных за программиста.
Отлично
Отлично
Ок. Используй в следующий раз ++
Отлично
Отлично
Не читал комменты, сделал сам. Правильно?
Можно проще - увеличивать счётчик на каждом шаге. А так да, формально задачу вы выполнили)
Супер!
У тебя на самом деле классные уроки!!
Вот домашка:
Всё работает.
Отлично!
Отлично
Отлично!
завести еще переменную равную 0 и в цикле прибовлять 1 на каждой итерации (++) и сумму скоростей разделить на значение этой переменной
Отлично. Достаточно только кода)
Отличная работа, только все имена переменных должны начинаться с маленькой буквы.
Придумайте способ обойтись без использования функции count.
Отлично. Переменную стоило назвать count
Отлично
Для чего if? Для чего отдельный цикл?
В ДЗ нужно было придумать другой способ вместо использования сount, я решил, что функцию count нужно написать самому вручную, это я и сделал, посмотрел что все ок, запустилось, и ушел радоваться)) оказывается реально можно было короче и логичнее все это сделать, вот второй вариант)
Теперь ОК)
Почему вместо чисел строки?
Для чего здесь переменная result?!
Отлично
Отлично
Идеально
Тяжко, но работает вроде. Думал тоже с инкрементом сделать, но не сообразил сразу, как его задействовать. Предыдущий вариант, Draft'a, действительно крутой. Проверил на своём и не пришлось с индексами мудрить)
Ага. Второй вариант лучше. На ключи не стоит надеяться
Результат:
Количество машин: 5
Сумма скоростей: 200
Средняя скорость: 40
Не стоит завязываться на индексы. Можно просто увеличивать счётчик
Вместо
пиши
Средняя скорость пересчитывается в каждой итерации цикла - производится лишняя работа, комп греется, приближая глобальное потепление. Не надо так.
Точно,защитники природы точно не обрадуются,спасибо )
Для чего два цикла? Во втором index не является индексом, это по-прежнему значение скорости.
А что странного? Значения вы считали одни и те же, но в двух местах. Сейчас всё считается за один обход цикла - это более оптимальный вариант. Для увеличения значения на единицу лучше использовать использовать оператор инкремента:
Вы написали, что индекс не индекс а значение скорости. Ок
Вы в вычислениях его не использовали ведь, поэтому это никак на них не влияло.
а, да точно, затупила
Отлично!
163.4
Число скоростей должно подсчитываться, а не быть захардкоженным.
Ааа... Понял) Чет не сразу вспомнил про этого оператора)
Отлично
Просто добавил переменную, к которой каждую итерацию добавляется единица.
А еще вопрос по уроку: в конце урока для функции count была выделена отдельная переменная $countOfCars = count($carsSpeeds). Нельзя ли сократить код на строку и записать вычисление средней скорости как: $averageSpeed = $sumOfSpeeds / count($carsSpeeds)?
Отлично. Можно.
Здрасьте! Подскажите пож, правильно понимаю ли, что foreach пробегает в массиве n-раз и внутри foreach переменный $count ++ оно у меня читает итерацию ну типа сколько раз пробежал в массиве, потом просто делим на $sumOfSpeeds да?
Всё верно :)
Клевый урок) Зашел на ура)
Отлично. Только с отступами проблема. Ну и переменные принято именовать английскими словами.
понял принял)
Отлично
Есть урок по стилистике написания кода? Смотрю разные уроки и каждый пишет по своему, те же обозначения переменной, кто то использует вместо стиля верблюда, просто нижний прочерк _
Как принято писать в 2019?
Уже давно есть PSR. Вам нужны PSR-1 и PSR-2.
Отлично
Отлично. Привыкайте использовать инкремент вместо $count += 1;
Я сделал так:
Добавил новую переменную в цикл. При каждой итерации плюс один. В конце разделил на количество итераций.
Отличный алгоритм
Отлично!
Пробел тут ставить не нужно:
А чего имена переменных такие? Они должны отражать то, для чего они нужны. Оперируйте терминами предметной области - скорость, сумма скоростей, средняя скорость. Переводите на английский и используйте полученные фразы для именования переменных.
Английский я знаю, так отметить захотелось :3 А так то я знаю что корректные имена нужно указывать :) (изучил тему)...
не очень надёжно. Ключи могут быть и строковыми. Лучше завести отдельную переменную и на каждой итерации увеличивать ее значение на единицу.
Я знаю что ключи могут иметь строковые значения, так отметил... :3
А вообще, вам просто повезло, что у вас в примере 3 скорости, а не 4. Иначе бы вы обнаружили, что в переменной numbArrayZeroKey оказалось бы не 4, а 6! В коде явная ошибка, её нужно поправить.
Также прикольно с функцией всё это дело сделать :3
СТОП! =)
Что за имена переменных? Почему массив это $arrayFunction? Переделайте на нормальные имена, читать невозможно.
Всё исправил имена! :3
Так а что в результате за число-то вообще? Нужно было посчитать среднюю скорость, не воспользовавшись функцией count.
$speedZero - что это за название. СкоростьНоль, дословный перевод. В этом месте:
она перестает иметь нулевое значение. Соответственно, название никак не отражает действительность.
Пробел тут не нужен.
В остальном отлично!
Не стоит надеяться на ключ массива. Лучше завести отдельную переменную и увеличивать ее в каждой итерации на 1.
Зачем определять переменную $sumOfSpeeds равную 0, без нее работает также само
Потому что PHP исправляет эту ошибку за вас. Если включить показ ошибок уровня WARNING и NOTICE, то вы увидите ошибку, говорящую о том, что используется неопределенная переменная.
Некорректно завязываться на индекс. На входе может быть вот такой массив:
Есть идеи, как решить такую проблему?
Красота!
Слишком жестко) Достаточно завести еще одну переменную и внутри цикла увеличивать ее на единицу
А я что сделал? :)
Ну разве что завернул это в функцию, а так - вроде ничего больше и не делал, кроме > завести еще одну переменную и внутри цикла увеличивать ее на единицу
В том-то и дело, один и тот же массив в результате обходится дважды, а можно это сделать один раз, и без вызова функции.
Отлично!
Добрый вечер!
Отлично!
Попытался связать это все с html и вводить скорость через браузер
Сначала нужно убдеиться, что такой ключ в массиве действительно есть (isset). Потом убедиться что это число (is_numeric). И только потом его можно использовать в вычислениях.
Не получилось проверить через isset, нашел другое решение.
Во-первых, почему вы используете and, а не &&?
Во-вторых так и не сделали проверку того, что ключ в массиве есть.
Если уберете вот эту строку:
И отправите форму, будет ошибка!
P.S. сидел, думал думал, как выкрутиться необычно. Но в итоге до инкремента не додумался и пришлось подглядеть в коментах(
Отлично
Отлично!
Можно переменную $a назвать более подходящим именем?
Отлично. Хорошие имена переменных.
Отлично!
Отлично.
Ну а если число скоростей в массиве изменится? Будет не очень.
Без функции count()
Отлично
Отлично!
Пробел тут только не нужен
Мой пример без функции count.
Отлично
Отлично
Лишний пробел. В остальном отлично
Не стоит полагаться на индексы для этой задачи. Ведь входной массив может оказаться таким:
Если нужно получить число элементов, нужно их посчитать, а не добывать это число из каких-то посторонних мест.
тогда отсчет от 0
Отлично
Стоит заменить на
В остальном отлично
Некорректно завязываться на индекс. На входе может быть вот такой массив:
Есть идеи, как решить такую проблему?
блин, точно! Всё гениальное просто! Артём, очень сильно извиняюсь, что сначала выкладываю задачу, а потом лезу в комменты и вижу, что Вы уже указывали на аналогичную ошибку! Исправляюсь:
Это нормальный подход, не надо ничего менять) На ошибках учатся
хорошо, спасибо) значит буду учиться)
Имена переменных с маленькой буквы пишутся.
Вместо
стоит написать
Хорошо, подкорректирую, спасибо!)
В видео нет звука(
Проверьте слух, или колонки, или что там у вас) Всё ок с видео
Прошу прощения, странно у меня во всех уроках был звук, а в этом не было. Возможно ПК решил по издеваться)) Сейчас все ок.
Хорошо, что не пришлось ничего чинить)
фикс по комментариям
Переменную $sumCarsOfSpeed нужно определить до цикла, иначе будет ошибка уровня notice. Включите показ всех ошибок в php.ini
Закрывающий тег ?> в конце файла не нужен.
привет!
Отлично! Для увеличения на единицу принято использовать оператор инкремента:
когда нет разницы (как в вашем примере), лучше писать $count++
А зачем отдельный цикл для подсчета количества? Считайте в том же.
Заметил, что у многих подход к решению отличается немного.
Был бы рад комментариям, что в моём коде может быть слабым местом (по структуре)?
Плохо. Зачем слепили все операции в одну строку?
Во-первых, не читается.
Во-вторых, работает не оптимальным образом - посчитать среднее можно одним действием после подсчета сумм скоростей и их числа. Вместо этого на каждом шаге производится деление.
Довольно легко пока)
Отлично!
Добрый день!
Придумал (ниже). Потом посмотрел готовое решение. Вопрос, если можно, в чем преимущество Вашего решения?
Средняя скорость движения по трассе: 104.33333333333
О каком преимуществе речь? Не вижу разницы
Получилось довольно просто:
Код
Результат:
Средняя скорость движения по трассе: 100
Отлично
Отлично!
###Без count
По заданию разве количество нужно вывести?
Проблема с форматированием. Делайте отступы и переносы как в уроках. Для этого в шторме можно нажать Ctrl+Alt+L
Средняя скорость без count
Зачем 2 форича? Хватит одного
Отлично
Здравствуйте! А как можно обойти двумерный массив (И правильно ли я понимаю, что он выглядит не так, как обычный матричный двумерный массив, у него нет четкой структуры)? Прошу прощения, если это рассказывается в следующий лекциях.
Нет, двумерный массив это всегда двумерный массив. Обходится он при помощи цикла в цикле.
Например:
Спасибо!
Отлично
Решил таким способом)
Что это?
Если честно, то это первое, что пришло мне в голову как решить эту задачу), сейчас конечно я вижу, что можно было просто обойтись=)
Отлично
Думаю самое банальное решение.
Почитал комменты и понял что решение не верное, при увеличении количества элементов, добавил просто счетчик
Да, надо так. Правильно
А если добавить 5 значений в массив, будет правильно считать?
Не понял, сейчас же и есть пять значений в массиве.
Это был комментарий к варианту с тремя элементами
У меня вопрос, вы когда находили СА число, то делили вне цикла, так нужно, или можно так как я вот сделал?:
А в чем тут логика? $i какое-то прибавляем. Делим на ключ.
Спасибо за урок. Задание решил так: