Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Відпрацювала над своїм кодом і вдосконалила його завдяки Вашим коментам, дякую Вам-)
- /* ви добре попрацювали, і зараз у одному кроці до розуміння принципу алгоритму що використовується доволі часто, -
- це жадібний алгоритм. Коли результат рішення на кожному кроці наприкінці дасть результат рішення для всіх вхідних
- даних */
- // Се функція для обчислення НАЙБІЛЬШОГО числа з ДВОХ - добре!
- function max (x, y) {
- return x > y ? x : y
- }
- /* так, тернарний оператор доречний саме коли потрібно отримати значення: чи для його повернення, чи для присвоювання.
- А чи спрацює такий код? Це про ті зайві елсе.))
- function max (x, y) {
- if (x > y) {
- return x;
- }
- return y;
- }
- */
- let a = +prompt ('Введи перше число');
- let b = +prompt ('Введи друге число');
- console. log (max (a, b));
- // Додаткова задача (для використання створеної мною функції) на вивід максимального числа в масиві, якій вже дан
- let array = [3, 5, 1, 7, 2, 0, 9, 4, 6, 8];
- let matchNum = 0; // Змінна для порівняння чисел в масиві
- let maxNum = 0; // Змінна для виводу максимального числа
- for (let i = 0; i < array.length; i++) {
- max (matchNum, array [i]) /* функція повертає більше з двох, тут вона відпрацює, але ми не збережемо її результату,
- тобто цей виклик функції ніяк не впливає на роботоу програми*/
- matchNum = array [i];
- if (max (matchNum, array [i])> maxNum) { /* тут вже краще використовуєте значення що повертає функція, для
- порівняння воно годиться, але можна ще спростити рішення ) */
- maxNum = (max (matchNum, array [i])); /* ось воно! єдиний рядок потрібний для вирішення, тільки передавати
- до функції треба поточний елемент та максимальний , ну а той що функція поверне зберігати до максимального.)
- Тобто якщо ми по черзі переберемо всі елементи масиву порівнюючи кожний з локальним максимумом - то отримаємо
- глобальний максимум . Локальний максимум - це більше з двох на кожному кроці.*/
- }
- }
- console.log ('===== MAX IS ===== ' + maxNum)
- //Друга задача на вивод максимального числа з 10-ти чисел користувача (теж з використаннм моєї функції)
- let numbers = [];
- let i = 0;
- while (i < 10) {
- numbers [i] = +prompt ('Введи число'); /* насправді ще на цьому етапі можна додати один рядок коду про який
- йдеться далі (та одну змінну), та цього буде достатньо для виявлення максимального, тобто можна до маисву не складати
- навіть. З точки зору декомпозиції код зараз є розділений на етапи : введення даних; пошук максимального;
- Корисно навчитися знаходити максимальне ще на етапі введення даних, уявімо, що пам'яті обмаль- масив створювати ніде;
- або таку ситуацію, що числа вводяться нескінчено, і після введення кожного нам потрібна знати про максимальне .) */
- i++;
- }
- console.log();
- // Виведу сюди створений масив чисел користувача
- let j = 0;
- while (j < numbers.length) {
- console.put (numbers [j++] + ' ')
- }
- console.log();
- console.log();
- /* якщо розлядати задачі як окремі то існування повністю ідентичного фрагменту коду можна якось виправдати, але якщо
- * таки фрагменти є у однієї програмі - то це не добре, варто дотримуватися принципу DRY, та винести такий повторюючийся
- * фрагмент до окремої функції.
- *
- * Але тут і зараз важливіше розібратися саме з тим як отримати максимальний (чи мінімальний, чи ще якийся) елемент з
- * масиву елементів роблячи перевірку на кожному кроці з одним елементом - тобто порівняння того, максимального що маємо з
- * поточним елементом, та заміна максимального на поточний у разі якщо той "переміг" - потрібна одна змінна та один
- * рядок коду в циклі що перебирає масив */
- let matchNum = 0; // Змінна для порівняння чисел в масиві // не потрібна
- let maxNum = 0; // Змінна для виводу максимального числа
- for (let i = 0; i < numbers.length; i++) {
- max (matchNum, numbers[i])
- matchNum = numbers[i];
- if (max (matchNum, numbers[i])> maxNum) {
- maxNum = (max (matchNum, numbers[i])); // цей рядок, але порівнюювати потрібно з максимумом
- }
- }
- console.log ('+++++ ' + maxNum + " +++++") /* ці красиві визерунки були для того, щоб ви прониклися ідеєю, що результат
- роботи програми (функції) може бути використанний будь-де у будь-якому вигляді, а тому краще повертати лише потрібне значення,
- без додаткових штук.
- Мені дуже приємно, що ви старанно йдете по курсу. Завжди відкритий до запитань.
- Гарного коду!
- */
Add Comment
Please, Sign In to add comment