Timkor

atm

Dec 26th, 2020 (edited)
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //Задача про банкомат:
  2. /* прикро те, що код не працює, хоча написаний нормально. Причина тому пропущена фігурна дужка, насправді може бути прикро отримати поламаний проект на проді з неуважності, раджу перевіряти та копіпастити свій перевірений код. Припускаю, що розробляєте у середовищі, що нівелює такі помилки, хоча все одно дивно.
  3.  
  4. Ті коменти , що починаються з ** - є суто факультативними, не потребують саме зараз глибокого розуміння.
  5. */
  6. let cards = [];
  7. let sumCards = 0;
  8. let i = 0;
  9. while (i < 10) {
  10.     cards[i] = 0;
  11.     i++        
  12. }
  13. for (let i = 0; i < cards.length; i++) {
  14.     let numCard = +prompt('Введіть номер карти?');
  15.     if (numCard < 0 || numCard > 9) {
  16.         i--
  17.     } else {
  18.         let money = +prompt('Яку суму покласти?');
  19.         if (money < -1000 || money > 1000)  {
  20.             i--
  21.         } else {
  22.             cards[numCard] = money;
  23.         break; // можливо тут збилася індентация, та/чи загубилася дужка, але в залежності де саме зміниться і семантика,
  24.                /* **тому з алгоритму можу лише сказати, що він не самий простий, тому що код росте "вправо", має вітвління з
  25.                 елсе - що не додає простоти при читані, також буде не дуже просто внести зміни в умови,  тобто
  26.                 збільшується вкладеність, яка погіршує сприйняття. Але запевняю, що на цьому етапі рішення цілком норм.
  27.                 Також ви добре прокачали розуміння умовних переходів, це добре.
  28.  
  29.                 **** змінна і буває від'ємною, зараз це норм, та існують ситуації в інших м.п, коли буде помилка -
  30.                 але це синтетичні ситуації, та все ж .)
  31.  
  32.                 Використання брейку інколи дуже доцільне, але треба пам'ятати, що це наче стоп-кран при наявності
  33.                 всіх інших органів керування потоком виконання програми, якщо буде бажання подивиться варіант коду
  34.                 нижче - я не кажу, що він правильний а ваш ні, ні, це лише для іншого погляду, бо різні кути зору
  35.                 прокачують та додають досвіду.
  36.                 */
  37.     }
  38. }
  39. sumCards = cards.reduce((a, b) => a + b); // ** круто, а чому не
  40. // sumCards = cards.reduce((sum, currentCardAmount) => {return(sum + currentCardAmount)}, 0);
  41.   console.log(cards); // якщо це ваші логі, вважаю правильним та майже обов'язковим їх використання при написанні коду,
  42.                       // то раджу не забувати видаляти їх з фінальної версії коду що передаєте далі (навіть для рев'ю)
  43.                       // якщо це не логі а вивід масиву до консолі, то краще зробити це в циклі, бо не всюди так спрацює.
  44.   console.log(`В сумі на всіх ваших картах: ${sumCards}`);
  45. // пододавав пробільчики  - стиль наше все.
  46. // Гарного коду!
  47.  
  48.  
  49.  
  50.  
  51.  
  52. // **нижче приклад фрагменту коду для обміну досвідом, не раджу дивитися, якщо плануєте ще щось переробляти у своєму
  53. // рішенні, а тільки після цього.
  54.  
  55. let cardNumber;
  56. do {  
  57.    cardNumber = +prompt ('Введіть номер карти?');
  58. } while (cardNumber < 0 || cardNumber > 9); // для повтору запиту вводу зручно використати do .. while
  59.  
  60. let payment;
  61. do {
  62.     payment = +prompt ('Яку суму покласти?');
  63. } while (payment > 1000 || payment < -1000);
  64.  
  65. cards[cardNumber] = payment; // тепер на корректному номері корректна сума
  66. // немае вкладенності, фрагменти окремі - декомпозовані, легше сприймаються, не мають вітвління.
  67. // А чим простіше - тим менше багів можуть заховатися.)
Add Comment
Please, Sign In to add comment