1. DiscountCalculator Hallgatói specifikáció Egy webáruház a rendelési érték alapján kedvezményt biztosít. * 10 000 Ft alatt nincs kedvezmény. * 10 000 Ft-tól 24 999 Ft-ig 5% kedvezmény jár. * 25 000 Ft-tól 49 999 Ft-ig 10% kedvezmény jár. * 50 000 Ft-tól 15% kedvezmény jár. * VIP ügyfél további 5 százalékpont kedvezményt kap. * A maximális kedvezmény 20%. * Negatív rendelési érték nem megengedett. A függvény a fizetendő összeget adja vissza. function calculateDiscountedPrice(orderValue, isVip) { let discount = 0; if (orderValue > 10000 && orderValue < 25000) { discount = 0.05; } else if (orderValue >= 25000 && orderValue <= 50000) { discount = 0.10; } else if (orderValue > 50000) { discount = 0.15; } if (isVip === true) { discount += 5; } if (discount > 0.20) { discount = 0.20; } return orderValue - discount; } 2. ParkingFeeCalculator Hallgatói specifikáció Egy parkoló díjszabása: * az első 15 perc ingyenes; * 15 perc felett minden megkezdett óra 600 Ft; * a napi maximális parkolási díj 5000 Ft; * hétvégén a normál díj 50%-át kell fizetni; * VIP ügyfél további 20% kedvezményt kap; * negatív parkolási idő nem megengedett. A függvény a fizetendő parkolási díjat adja vissza. Hibás JavaScript function calculateParkingFee(minutes, isWeekend, isVip) { if (minutes < 15) { return 0; } let hours = Math.floor(minutes / 60); let fee = hours * 600; if (isWeekend) { fee = fee * 0.5; } if (isVip) { fee = fee - 20; } if (fee > 5000) { fee = 5000; } return fee; } 3. CinemaTicketCalculator Hallgatói specifikáció Egy mozijegy alapára 3000 Ft. Kedvezmények: * 6 éves kor alatt ingyenes; * 6–17 éves korig 30% kedvezmény; * 65 éves kortól 40% kedvezmény; * diákok 20% kedvezményt kapnak; * egyszerre csak a legnagyobb kedvezmény alkalmazható; * 3D film esetén 800 Ft felár fizetendő; * a 3D felárra nem vonatkozik kedvezmény; * negatív életkor és 120 év feletti életkor érvénytelen. * Hibás JavaScript function calculateTicketPrice(age, isStudent, is3D) { let price = 3000; if (age <= 6) { price = 0; } else if (age < 18) { price = price * 0.7; } else if (age > 65) { price = price * 0.6; } if (isStudent) { price = price * 0.8; } if (is3D) { price = price * 1.8; } return price; } 4. ExamGradeCalculator Egy vizsga két részből áll: * elmélet: maximum 60 pont; * gyakorlat: maximum 40 pont. A vizsga csak akkor sikeres, ha: * elméletből legalább 30 pontot, * gyakorlatból legalább 20 pontot elér a hallgató. Ha mindkét minimum teljesül, az összpontszám alapján: Pont Jegy 0–49 1 50–59 2 60–69 3 70–84 4 85–100 5 Érvénytelen pontszám esetén hibát kell jelezni. Hibás JavaScript function calculateGrade(theory, practice) { let total = theory + practice; if (theory < 30 && practice < 20) { return 1; } if (total < 50) { return 1; } else if (total <= 60) { return 2; } else if (total <= 70) { return 3; } else if (total <= 85) { return 4; } else { return 5; } } 5. PackageClassifier Hallgatói specifikáció Egy futárszolgálat a csomagokat méret és tömeg alapján kategorizálja. * Small legfeljebb 2 kg; mindhárom mérete legfeljebb 30 cm. * Medium legfeljebb 10 kg; egyik mérete sem nagyobb 60 cm-nél. * Large legfeljebb 30 kg; egyik mérete sem nagyobb 120 cm-nél. * Egyéb esetben: OVERSIZE * Unordered List ItemÉrvénytelen a csomag, ha: bármely mérete 0 vagy negatív; tömege 0 vagy negatív. Ebben az esetben: INVALID Hibás JavaScript function classifyPackage(weight, length, width, height) { if (weight < 2 && length < 30 && width < 30 && height < 30) { return "SMALL"; } if (weight <= 10 && (length <= 60 || width <= 60 || height <= 60)) { return "MEDIUM"; } if (weight <= 30 && length <= 120 && width <= 120 && height <= 120) { return "LARGE"; } return "OVERSIZE"; }