Здравейте!
Имам проблем с 7-mа задача от подготвителния курс за JavaScript - Conditional Statements.
Задачата е следната:
Write a program that finds the biggest of 5 numbers that are read from the console, using only 5 if statements.
МОЕТО РЕШЕНИЕ:
var a = +gets();
var b = +gets();
var c = +gets();
var d = +gets();
var e = +gets();
if (a >= b && a>=c && a>=d && a>=e) {
print(a);
}
if (b >= a && b>=c && b>=d && b>=e) {
print(b);
}
if (c>= a && c>=b && c>=d && c>=e) {
print©;
}
if (d>= a && d>=b && d>=c && d>=e) {
print(d);
}
if (e>=a && e>=b && e>=c && e>=d) {
print(e);
}
Нещо явно не е както трабва…
Здравей,
В иф проверките имаш дублиране на условията.
Пробвай да махнеш “равно”-то от средните две проверки.
Благодаря ти. Пробвах, това което ми каза. Или не съм направила точно каквото трябва или нещо пак не беше наред.
Обаче, потърсих друг подход, пак в рамките на изискванията на задачата, и този път стана :).
if (a>=Math.max(a,b,c,d,e)) {
print(a);
} else if (b>=Math.max(a,b,c,d,e)) {
print(b);
} else if (c>=Math.max(a,b,c,d,e)) {
print©;
} else if (d>=Math.max(a,b,c,d,e)) {
print(d);
} else if (e>=Math.max(a,b,c,d,e)) {
print(e);
}
3 Likes
Luba
September 9, 2020, 5:05pm
4
Привет!
При мен първото решение си е ОК /като оправих print© на print( c )/. Каква грешка ти дава?
Второто съще е супер, по-елегантно. Само бих препоръчала да се ползва ‘const’ / ‘let’ вместо ‘var’, както и да ограждаш със скобички, за да ограничиш вероятността за грешка >> т.е. if ((e >= a) && (e >= b)…
Поздрави!
P.S. Нямам достъп до задачата, но говорим за входящи данни от тип:
const input = [‘22’, ‘2’, ‘8’, ‘2’, ‘9’]
Люба, привет!
Относно първия вариант и на мен ми минаваше във VSCode, но не и на платформата на сайта на академията, затова реших да питам тук какво бъркам. Даваше ми “Wrong answer”, “Short circuit”.
След това пробвах втория вариант - стана веднага.
След като ми писа ти се позамислих още веднъж какво му е грешното на първия вариант (предложенията на victor.nicкolov нещо не ми дадоха резултат) и намерих решението, което минава и във VSCode и на сайта :)… Така че много ти благодаря
Ето… Липсваха няколко ELSE преди 2,3,4 и 5 IF
let input = [
"4",
"4",
"4",
"4",
"4",
];
let print = this.print || console.log;
let gets = this.gets || ((arr, index) => () => arr[index++])(input, 0);
let a = +gets();
let b = +gets();
let c = +gets();
let d = +gets();
let e = +gets();
if ((a >= b) && (a>=c) && (a>=d) && (a>=e)) {
print(a);
} else if ((b >= a) && (b>=c) && (b>=d) && (b>=e)) {
print(b);
} else if ((c>= a) && (c>=b) && (c>=d) && (c>=e)) {
print©;
} else if ((d>= a) && (d>=b) && (d>=c) && (d>=e)) {
print(d);
} else if ((e>=a) && (e>=b) && (e>=c) && (e>=d)) {
print(e);
}
1 Like
Luba
September 10, 2020, 9:03pm
6
Да, ако се иска само един резултат - едно число - правилното си е с else if (иначе, при повтарящи се входящи числа, ще излязат няколко). Супер, радвам се! Значи си имаш вече две решения! :))))
Все така да се справяш, успех!!!
1 Like