Skip to content

Commit cd9895f

Browse files
committed
[TM-5.8/st-compl] training-module
Solving 5 tasks. Working with "if/else, switch/case, trim(), test()". Worth noting: - "early return". FS-dev: B-3 / JS basic
1 parent 7bc26a8 commit cd9895f

File tree

1 file changed

+155
-0
lines changed
  • full-stack-dev/3-js-basic/5-flow-control/5-8-training-module

1 file changed

+155
-0
lines changed
Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
'use strict';
2+
3+
// Задание 1:
4+
// Нужно проанализировать полученный рейтинг фильма и решить, к какой из трех категорий он относится: "Отличный фильм", "Хороший фильм" или "Плохой фильм".
5+
// - Согласно if...else логики.
6+
7+
function getMovieCategory(rating) {
8+
rating = parseFloat(rating);
9+
10+
if (isNaN(rating)) {
11+
return 'Передайте числовой рейтинг';
12+
}
13+
14+
if (rating < 0 || rating > 10) {
15+
return 'Некорректный рейтинг';
16+
}
17+
18+
if (rating >= 8) {
19+
return 'Отличный фильм';
20+
} else if (rating >= 5) {
21+
return 'Хороший фильм';
22+
} else {
23+
return 'Плохой фильм';
24+
}
25+
}
26+
27+
console.log(getMovieCategory(8.5)); // "Отличный фильм"
28+
console.log(getMovieCategory(6.2)); // "Хороший фильм"
29+
console.log(getMovieCategory(3.1)); // "Плохой фильм"
30+
console.log(getMovieCategory(11)); // "Некорректный рейтинг"
31+
console.log(getMovieCategory('')); // "Передайте числовой рейтинг"
32+
33+
// Задание 2:
34+
// Создайте программу для определения скидки на товар в зависимости от категории покупателя.
35+
// - Категория покупателей ("regular", "premium", "vip").
36+
// - Скидка 5, 15, 25.
37+
38+
function getDiscount(category) {
39+
if (!category || typeof category !== 'string') {
40+
return 0;
41+
}
42+
43+
category = category.trim().toLowerCase();
44+
45+
if (category === 'vip') {
46+
return 25;
47+
} else if (category === 'premium') {
48+
return 15;
49+
} else if (category === 'regular') {
50+
return 5;
51+
} else {
52+
return 0;
53+
}
54+
}
55+
56+
console.log(getDiscount('vip')); // 25
57+
console.log(getDiscount('premium')); // 15
58+
console.log(getDiscount('regular')); // 5
59+
console.log(getDiscount(99)); // 0
60+
61+
// Задание 3:
62+
// Создайте программу для определения типа транспорта на основе скорости движения.
63+
// - Число (скорость в км/ч): 25, 60, 900.
64+
// - Транспорт: велосипед, автомобиль, самолет.
65+
// Скорость должна быть положительным числом.
66+
67+
function getTransportType(speed) {
68+
if (typeof speed !== 'number' || Number.isNaN(speed) || speed <= 0) {
69+
return 'Неверный ввод';
70+
}
71+
72+
if (speed > 120) {
73+
return 'Самолет';
74+
} else if (speed > 40) {
75+
return 'Автомобиль';
76+
} else if (speed >= 20) {
77+
return 'Велосипед';
78+
} else {
79+
return 'Пешком';
80+
}
81+
}
82+
83+
console.log(getTransportType(900)); // "Самолет"
84+
console.log(getTransportType(60)); // "Автомобиль"
85+
console.log(getTransportType(20)); // "Велосипед"
86+
87+
// Задание 4:
88+
// Создайте программу для определения статуса заказа в интернет-магазине на основе его номера/первой буквы.
89+
// Номер заказа должен содержать ровно 5 символов (1 буква + 4 цифры).
90+
// - "A1234", Заказ обрабатывается.
91+
// - "B5678", Заказ отправлен.
92+
// - "C9999", Заказ доставлен.
93+
94+
function getOrderStatus(order) {
95+
if (typeof order !== 'string') {
96+
return 'Неизвестный статус';
97+
}
98+
99+
order = order.trim().toUpperCase();
100+
101+
if (order.length !== 5) {
102+
return 'Неизвестный статус';
103+
}
104+
105+
if (!/^[A-Za-z]\d{4}$/.test(order)) {
106+
return 'Неизвестный статус'; // если НЕ 1 буква + 4 цифры.. по сути это и проверка длинны ещё
107+
}
108+
109+
const statusCode = order[0];
110+
111+
switch (statusCode) {
112+
case 'A':
113+
return 'Заказ обрабатывается';
114+
case 'B':
115+
return 'Заказ отправлен';
116+
case 'C':
117+
return 'Заказ доставлен';
118+
default:
119+
return 'Неизвестный статус';
120+
}
121+
}
122+
123+
console.log(getOrderStatus('A1234')); // "Заказ обрабатывается"
124+
console.log(getOrderStatus('B5678')); // "Заказ отправлен"
125+
console.log(getOrderStatus('C9999')); // "Заказ доставлен"
126+
console.log(getOrderStatus('D0157')); // "Неизвестный статус"
127+
128+
// Задание 5:
129+
// Создайте программу для определения статуса студента на основе его итогового балла.
130+
// Балл должен быть числом от 0 до 100 включительно.
131+
// - 95, "Отличник"
132+
// - 75, "Хорошист"
133+
// - 55, "Троечник"
134+
// - 35, "Неуспевающий"
135+
136+
function getStudentStatus(score) {
137+
if (typeof score !== 'number' || score < 0 || score > 100) {
138+
return 'Некорректный балл';
139+
}
140+
141+
if (score >= 90) {
142+
return 'Отличник';
143+
} else if (score >= 70) {
144+
return 'Хорошист';
145+
} else if (score >= 50) {
146+
return 'Троечник';
147+
} else {
148+
return 'Неуспевающий';
149+
}
150+
}
151+
152+
console.log(getStudentStatus(95)); // "Отличник"
153+
console.log(getStudentStatus(75)); // "Хорошист"
154+
console.log(getStudentStatus(55)); // "Троечник"
155+
console.log(getStudentStatus(35)); // "Неуспевающий"

0 commit comments

Comments
 (0)