View difference between Paste ID: 00USCU3e and 1v19cL7T
SHOW: | | - or go back to the newest paste.
1
//https://zero.p2p.shpp.me/tasks/4_1_cash_machine.html
2
// Інна Заїка
3-
let cards = [];// масив з карток
3+
/*
4
Створив псевдокод з таких логічних етапів-блоків:
5
створити дані (масив карток)
6
ініціалізувати початковй стан карток (всі по нулях у нас)
7
прийняти валідний номер карти
8
прийняти валідну суму патежу
9
зробити поповнення обраної картки на обрану суму картки
10
вивести стан всіх карток
11
вивести сумму на всіх картках
12
13-
    if (!((cardNumber >= 0) && (cardNumber <= 9))) {
13+
розлянемо та конкретизуємо: прийняти валідний номер карти:
14
зараз є так:
15-
        continue;// продовжуємо
15+
1 повторювати безкінечно в циклі
16
2 запропонувати ввести номер карти (покласти до змінної кардНомер)
17
3 якщо кардНомер не валідний продовжувати введення 2
18-
    break;// зупинка
18+
	інакше перервати вічний цикл
19
20
необхідний мінімум (саме такого кретерію раджу дотримуватися, звісно не йдеться про втрату якості чи функціоналу)
21-
    let money = +prompt(" Яку суму положити на картку?");// ложимо сумму на картку
21+
1 запропонувати ввести номер карти (покласти до змінної кардНомер)
22
2 поки кардНомер не валідний повторювати введення 1 
23
ці два нупкти мона перемтавити місцями звісно, важливо те,  що після них будемо мати валідний номер картки.
24
25
Цей псевдокод можна реалізувати елегантно, без брейку та контінью, якщо схочете зробіть це самостійно, мій варіант "схований"  нижче-знизу цієї пасти 
26-
    cards[cardNumber] += money;
26+
27
*/
28
29
let cards = [];// масив з карток 
30
31
for (let i = 0; i < 10; i++) {
32
    cards[i] = 0;//на всих картках баланс нуль
33
}
34
35-
console.log("Загальна сума: " + moneySum);
35+
36
let cardNumber;// змінна номер картки
37
while (true) {
38
    cardNumber = +prompt(" введіть номер картки(від 0 до 9)");// вводимо номер картки, перевіряємо на валідність
39
    if (!((cardNumber >= 0) && (cardNumber <= 9))) { // є зайві дужки
40
        alert("Не валідний номер картки!");
41
        continue;// продовжуємо - якщо не інвертовувати умову, то контінью не знадобиться.)
42
    }
43
44
    break;// зупинка - ьрейк буває корисним, як і контінью, а буває свідчить про недоліки архітектури (алгоритму)
45
}
46
47
let money; // створимо цю змінну вище, тоді далі буде простіше відокреми логічні етапи-блоки коду.
48
while (true) {
49
    /*let*/ money = +prompt(" Яку суму положити на картку?");// ложимо сумму на картку  
50
    if (!((money >= -1000) && (money <= 1000))) {
51
        alert("Не можливо виконати дану операцію");
52
        continue;
53
    }
54
    //cards[cardNumber] += money; // тут один логічний блок коду поміщений всередину іншого, варто відокремити.
55
    break;
56
}
57
58
cards[cardNumber] += money; // логічний етап: зробити поповнення обраної картки на обрану суму картки -  відокремлено
59
60
let moneySum = 0;
61
for (let i = 0; i < cards.length; i++) {
62
    moneySum  += cards[i];
63
}
64
65
console.log("Загальна сума: " + moneySum);
66
67
// правильне рішення, продуманий алгоритм, стиль коду витримано, -  добра робота!
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
номерКартки = -1 //якийсь невалідний номер
95
поки (картка не валідна) {
96
	номерКартки = +(введіть номер картки)
97
}
98
// ще нижче код
99
100
101
102
103
104
105
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
let  cardNumber = -1; // ініціалізуємо невалідним значенням щоб зайти в цикл, не подобається мені так, нижче є інакше.
131
while (!(cardNumber >= 0 && cardNumber <= 9)) { // перевіряємо на валідність
132
    cardNumber = +prompt(" введіть номер картки(від 0 до 9)");// вводимо номер картки
133
}
134
135
// щоб не ініціалізувати невалідним значенням використаємо do while
136
let  cardNumber = 0; // ініціалізуємо будьяким значенням
137
do {
138
    cardNumber = +prompt(" введіть номер картки(від 0 до 9)");// вводимо номер картки, 
139
} while (!(cardNumber >= 0 && cardNumber <= 9)); // перевіряємо на валідність
140
141
// є ще такий недоваріант:
142
let  cardNumber = 0; // ініціалізуємо ,elmzrbv значенням
143
while (!((cardNumber = +prompt(" введіть номер картки(від 0 до 9)")) >= 0 && cardNumber <= 9)) {
144
    // вводимо номер картки, та перевіряємо на валідність прямо в умові циклу - нечитабильно, не пишить таке.)
145
}    
146
    
147
    
148
// Згадалося ще , є думка, що варто зациклити програму, ну щоб вводити можна було досхочу картки та суми і виводились результати, ну - цікаво ж!  Вважаю це по особистому побажанню кожного. Я б, мабуть,  спробував принаймні побавитися.
149
// далі трохи про функції, якщо забажаєте
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
let  cardNumber = -1; // ініціалізуємо невалідним значенням щоб зайти в цикл, не подобається мені так, нижче є інакше.
175
while (!(cardNumber >= 0 && cardNumber <= 9)) { // перевіряємо на валідність - 
176
    cardNumber = +prompt(" введіть номер картки(від 0 до 9)");// вводимо номер картки
177
}
178
// хочу поділитися з вами задоволенням від того як красиво функція тут буде працювати:
179
//свторимо функцію що отримає номер картки, а повертає тру якщо картка валідна, форс -якщо не валідна. Такі функції прийнято іменувати починаючи з is...
180
function isValidCard(numberOfCard) {
181
	if (numberOfCard >= 0 && numberOfCard <= 9) {
182
    	return true;
183
    } else {
184
    	return false;
185
    }
186
}
187
// навмисно зараз написав функцію "по навчальному", поміркуйте, чому можна не писати елсе і функція буде працювати так само?
188
189
// більш "доросла" весрія функції виглядатиме так
190
function isValidCard(numberOfCard) {
191
	return (numberOfCard >= 0 && numberOfCard <= 9); // саме так це працює, повернемо тру, коли вираз трушний і навпаки.
192
}
193
// тоді наш блок вайлу буде таким
194
let  cardNumber = -1; // ініціалізуємо невалідним значенням щоб зайти в цикл, не подобається мені так, нижче є інакше.
195
while (!isValid(cardNumber)) { // перевіряємо на валідність передавши номер карти в функцію, а вона повертає те саме, що й вираз порівняння який тут був. Інверрсію лишаємо оператором !, ніколи не треба створювати функціі isNotValid ...  
196
    cardNumber = +prompt(" введіть номер картки(від 0 до 9)");// вводимо номер картки
197
}
198
// код стає прозою)
199
// Гарного коду!