Timkor

loop

Dec 8th, 2020 (edited)
827
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // 1. Cities
  2. let cities = []
  3. let isProgKYC = false // це змінна булєвого типу (тру, фолс) , такі змінні прийнято йменувати так: isFound, isSmth, hasSmth
  4. // та з цим все добре, а ось ProgKYC - це щось не дуже явне, в ідеалі код має бути зрозумілим для програміста який його
  5. // читає
  6. for (let i = 0; i < 10; i++) {
  7.     cities[i] = prompt("Введи назву міста")
  8. }
  9.  
  10. let homeTown = prompt("Введи своє рідне місто")
  11.  
  12. for (let i = 0; i < cities.length; i++) {
  13.     if (cities[i] == homeTown) {
  14.         isProgKYC = true
  15.         break // все добре, тут брейк норм, але є можливість від нього звільнитися та не втратити оптимізації.
  16.         // якщо буде настрій поміркуйте як.
  17.     }
  18. }
  19.  
  20. if (isProgKYC == true) { // можна написати if (isProgKYC) , при цьому if (isFound) звучить краще.
  21.     console.log("я знаю твоє місто!")
  22. } else {
  23.     console.log("я НЕ знаю твоє місто!")
  24. }
  25.  
  26. console.log(cities)
  27.  
  28. // 2.ATM
  29. let atm = [] // cards? массиви краще іменувати у множині
  30. for (let i = 0; i < 10; i++){
  31.     atm[i] = 0
  32. }
  33.  
  34. let cardNum = +prompt("Введи номер картки:")
  35. let topUp
  36. while (cardNum < 0 || cardNum > 9) {
  37.     cardNum = +prompt("Введи вірний номер картки")
  38. }
  39. topUp = +prompt("Введи суму поповнення")
  40. while (topUp < -1000 || topUp > 1000) {
  41.     topUp = +prompt("Введи вірну суму поповнення")
  42. }
  43. atm[cardNum] =+ topUp
  44. // все добре, та іноді, доволі не часто, та все ж буває корисним do .. while
  45.  
  46. let cardSum = 0
  47. for (let i = 0; i < atm.length; i++) {
  48.     cardSum = cardSum + atm[i]
  49. }
  50.  
  51. console.log(cardNum)
  52. console.log(topUp)
  53. console.log(atm)
  54. console.log(`Сума на всіх картах ${cardSum}`)
  55.  
  56. // 3.Centered thing
  57. let thing = [] // скоріш це ім'я більш глобальне, массив можна , наприклад, rowsOfThing or thingRows, або просто rows
  58. let i = 0
  59. let space = 0
  60. let stars = 0
  61. let width = 0
  62. let string = ""
  63.  
  64. while (i < 20) {
  65.     thing[i] = +prompt("Введи число будь ласка")
  66.     if (thing[i] == 0) { // якщо був настрій і ви поміркували як можна без брейку, то тут це теж актуально, як і do .. while
  67.         break
  68.     }
  69.     while ((thing[i] % 2) == 0) {
  70.         thing[i] = +prompt("Введи число будь ласка")
  71.     }
  72.    
  73.     i++
  74. } // можна трохи спростити цикл вводу значень рядків штукі, не будь який ввод користувача має попасти до массиву, нуль та
  75.   // парні не мають, можливо є сенс додати проміжну змінну, яка має пройти валідацію перед тим як потрапити до массиву.
  76.   // Також можна залишити лише один промпт для числа, та позбавитися брейку. Але ваш варіант цілком робочий. Мій варіант
  77.   // коду цього блоку для порівняння нижче, лише для того, щоб ви могли побачити альтернативний варіант, в цілях розвитку.
  78.  
  79.  
  80. let rowWidth = 0 // ширина рядку
  81.  
  82. for(let a = 0; a < thing.length ; a++) { // а чого тут змінна "а", прийнято "і", якщо це просто "і"ндекс, "і"терація, або
  83.     // інша, але тоді зазвичай із значущим ім'ям
  84.    rowWidth = Math.max(thing[a],rowWidth) // корисно реалізувати свій вибір максимального без Math.max , доречи
  85.     // тут до змінної попадає максимальна ширина рядку
  86. }
  87. rowWidth = (rowWidth - 1) / 2 // тут змінна втратила семантичний зв'язок із назвою, принаймі він став слабкіший в два рази)
  88.  
  89. for(let a = 0; a < thing.length - 1; a++) { // ну "а" так "а"
  90.     string = ""
  91.     width = (thing [a])/2
  92.     space = rowWidth - width
  93.     stars = rowWidth - space
  94.     for(let s = 0; s < space; s++) {
  95.         string = string + " "
  96.     }
  97.     for(let s = 0; s < stars - 1 ; s++) {
  98.         string = string + "*" + "*"
  99.     }
  100.     string = string + "*"
  101.     console.log(string) // можна додати string += '/n'; - це перевод строки, тоді вся штука буде зберігатися у змінній. Це
  102.     //може бути потрібно (зручно) у майбутніх (інших) задачах, в цієї задачі вивід до консолі логічніший.
  103. } // можна спростити арифметику, та це на ваш розсуд.
  104.  
  105. console.log(thing)
  106.  
  107. // Цілком нормальні рішення.
  108. // Гарного коду.
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117. // нижче блок коду для порівняння.
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150. // мій варіант
  151. let userInput = 0;
  152. do {
  153.     userInput = +prompt("Введи число будь ласка");
  154.     if (userInput % 2 === 1) {
  155.         rows[i] = userInput;
  156.         i++;
  157.     }
  158. } while (i < 20 && userInput !== 0)
Advertisement
Add Comment
Please, Sign In to add comment