Timkor

loops

Dec 3rd, 2020
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // 1. Stars
  2. //  let stars = 10
  3. //  let stars = 100
  4. //  let stars = 10000
  5.  
  6. let stars = 10
  7. stars = Number(prompt("Stars count")).toFixed() //Запитання в 6 пункті
  8.  
  9. // for (let i = 0; i < stars ; i++ ) {
  10. //     console.log("*")
  11. // }
  12.  
  13.  while(stars != 0) {
  14.      console.log("*")
  15.      stars--
  16.  }
  17.  
  18. // 2. Numbers
  19. let num = Number(prompt("Put Number")).toFixed()
  20. while (isNaN(num) == Number.isNaN(NaN) || num < 0) { //Унеможливив написання букв та чисел менше 0
  21.     num = Number(prompt("Put number higher than 0"))
  22. }
  23. // console.log(Number.isNaN(NaN))   - це завжди одне значення має. тобто вираз можна скоротити до
  24. // while (isNaN(num) || num < 0) - доречі я не впевнений, що така перевірка (isNaN(num)) корректна, але зараз це не
  25. // важливо.
  26. // Насправді зараз важливо не ускладнюючи завдань вникнути у сутність кожної з тем. Це дуже круто, що ви
  27. // експерементуєте, - саме так приходить досвід, та прошу для рев'ю скидати завдання у тому вигляді, як вони є на
  28. // порталі - не ускладнюючи.
  29.  
  30.  
  31. /*вивести на екран числа від 1 до N (де N - це число, яке введе користувач).
  32. Використовувати for.
  33. В конці не має бути коми.
  34. На весь код має бути лише одна команда виводу числа.
  35.  
  36. замість for юзати while для задачі
  37. вивести в зворотньому порядку числа
  38. вивести на екран парні числа от 2 до N
  39.  
  40. якщо читати згори до низу, та послідовно виконувати завдання, то виводити через , та не ставити її післі останнього числа
  41. припадає на послідовність  від 1 до N, там ТАКА заміна не пройде, краще алгоритмично ставити, чи не ставити кому . Взагалі
  42. всі задачи на підготовчому курсі не на використання крутих джаваскриптових функцій, а на самі базові речі, іноді саму малість з алгорітмикою*/
  43.  
  44. let numbers = ""
  45. while (num != 0) {
  46.     if (num % 2 == 0) {
  47.         numbers = numbers + num + ","
  48.     }
  49.     num--
  50.     numbers = numbers.replace(",2,", ",2.")
  51. }
  52. console.log(numbers)
  53.  
  54. // 3.Sqr
  55. let size = Number(prompt("sqr size")).toFixed()
  56. let sqr = "*"
  57. let h = 0
  58. let line = ""
  59.  
  60. // while(h != size ) {
  61. //     for (let w = 0; w < size -1; w++) { //Виконав без repeat для "*", але з оператором break
  62. //         if (sqr == "*".repeat(size)) {
  63. //             break
  64. //         }
  65. //         sqr = sqr + "*"
  66. //     }
  67. //     console.log(sqr)
  68. //     h++
  69. // }
  70.  
  71. for(let i = 0; i < size;i++) { //Прочитав про Recursive functions та зробив трошки інакшим методом
  72.     console.log(getLine(size))
  73.     line = ""
  74. }
  75.  
  76. function getLine(size) { // це ж задачки на цикли, ви дійсно вважаєте , що використати рекурсівну функцію це те, що треба?)
  77.   line += "*"
  78.   if(size == 1){
  79.     return line
  80.   }
  81.   return getLine(size - 1)
  82. }
  83.  
  84. // 4.Tri
  85. let size = +prompt("Tri size").toFixed()
  86. let triangle = "*".repeat(size) // щодо repeat я вже писав, це тема циклів, тут немає сенсу використовувати щось інше
  87. for (let h = size; h > 0; h--) {
  88.     console.log(triangle)
  89.     triangle = triangle.substr(0, h - 1)
  90. }
  91.  
  92. // 5.Tree
  93. let size = +prompt("Tree size").toFixed() - 1)
  94. let tree = "*"
  95. for(let h = 0; h < size; h++ ) {
  96.     tree = " ".repeat(size - h) + "*" + "*".repeat(h*2)
  97.     console.log(tree)
  98. }
  99. console.log(" ".repeat(size) + "*")
  100.  
  101. // 6.Max numbers  
  102. let num = []
  103. let a = 1
  104. while(a != 0) {
  105.     a = Number(prompt("Put number")).toFixed() //якщо змінити Number на + то викликає помилку
  106. //"Uncaught TypeError: prompt(...).toFixed is not a function", чому?
  107.     //  a = +prompt("Put number");  a = (+prompt("Put number")).toFixed() - так теж працює, але не має сенсу, звісно.
  108.     // .toFixed() - для форматуваня числа в число із встановленою кількістю знаків після крапки, тут не до чого.
  109.     // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed
  110.     if(a % 2 == 0) {
  111.         num.push(a)
  112.     }
  113. }
  114. // let max = Math.max(0, num)
  115. // console.log(max)
  116.  
  117. let max = 0
  118. for(i = 0; i < num.length; i++) { //Виконав через цикл
  119.     if(max < num[i]) max = num[i]
  120. }
  121. console.log(max)
  122. console.log(num)
  123.  
  124. // let largestNum = num.reduce(function(prevMax, curr) { //Замінив на "prevMax щоб було зрозуміліше що виконує ця змінна"
  125. //     return Math.max(prevMax, curr)
  126. // })
  127. // console.log(num)
  128. // console.log(largestNum)
  129.  
  130. // 7.Num Sum
  131. let a = Number(prompt("Number А")).toFixed()
  132. let b = Number(prompt("Number B")).toFixed()
  133. let nums = []
  134. let variable
  135. let sum = 0
  136. // if(a < b) {
  137. //     for(let i = a; i <= b; i++) {
  138. //         nums.push(a++)
  139. //     }
  140. // } else if (b < a) {
  141. //     for(let i = b; i <= a; i++) {
  142. //         nums.push(b++) //Якщо ми будемо використовувати ++b то значення числа підуть вгору на 1,
  143. //                          тому що спочатку буде додавання 1+b а потім вписуватись в массив
  144. //     }
  145. // }
  146.  
  147. if (a > b) { //Виконав умову порівняння та замінив місцями змінні коли вони не в правильному порядку
  148.     variable = a
  149.     a = b
  150.     b = variable
  151. }
  152. variable = b - a // а чи знаєте спосіб як поміняти місцями дві числові змінні без участі третьої? була така задача.
  153.  
  154. for (let i = 0; i <= variable; i++) { //Тепер цикл підходить для обох випадків
  155.     nums.push(a++)  
  156.     sum += nums[i] //Зробив без методу reduce, за допомогою циклу
  157. }
  158.  
  159. // let sum = nums.reduce((prev, curr) => prev + curr)
  160.  
  161. console.log(nums)
  162. console.log(sum)
  163.  
  164. /*до коду, що закоментований дуже погано ставляться на рев'ю, гірше тільки лишати коментований код у робочому проекті, це тому, що він породжує зайві запитаня, і всі вони потребують зайвої уваги та праці. Просто повірте, потім відчуєте це на собі.
  165. У своїх варіантах звісно коментуйте як вам зручно, але для рев'ю та в "продакшн" (ну поки умовно :) - тільки чистий код. Коментарі потрібні, але тільки як пояснення до коду. Ніякого закоментованого коду - це зло.
  166.  
  167. Всі ці задачки лише для прокачки розуміння циклів, немає сенсу вирішувати їх якимся інакшим чином.
  168. Вашого досвіду має вистачити для швидкого проходження всіх тем, та здачи вступного. Вільний час можна порішати задачки з codewars, наприклад, буде значно більше проку, чим ви будете рекурсією зірочки малювати.
  169.  
  170. Гарного коду.
  171. */
Advertisement
Add Comment
Please, Sign In to add comment