JavaScript Fundamentals, Practical Tasks - Conditional Statements

Здравейте!
Имам проблем с 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

Привет!

При мен първото решение си е ОК /като оправих 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 и на сайта :)… Така че много ти благодаря :slight_smile:

Ето… Липсваха няколко 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

Да, ако се иска само един резултат - едно число - правилното си е с else if (иначе, при повтарящи се входящи числа, ще излязат няколко). Супер, радвам се! Значи си имаш вече две решения! :))))
Все така да се справяш, успех!!!
:green_heart:

1 Like