Conditional Statements Coding Tasks - Alpha 36 JS Preparation

Здравейте,

В момента решавам Coding Tasks за Conditional Statements и ми прави впечатление, че системата не приема решенията на някои от задачите - по-точно приема като верни само част от Test Cases, a други не. Това би било ок за една или две задачи - бих помислил, че не правя нещо правилно, но започва да се случва на всяка задача, а на някои от тях съм убеден, че нямам грешка. Ще публикувам две решения на една задача за пример. Бихте ли могли да погледнете? Решенияата и на двете задачи са само частично правилни.

Благодаря!

Biggest of Five

Description

Write a program that finds the biggest of 5 numbers, using only 5 if statements.

Input

Read from the standard input.

  • On the first 5 lines you will receive the 5 numbers, each on a separate line

Output

Print to the standard output.

  • On the only output line, write the biggest of the three numbers.
  • Print the answer number as you read it. No rounding up or down.

Constraints

  • The three numbers will always be valid floating-point numbers in the range [-200, 200] . You do not have to explicitly check if they are valid.

Решение 1 :

let a = gets();
let b = gets();
let c = gets();
let d = gets();
let e = gets();
let biggerNumber = a;

if (a < b) {
biggerNumber = b;
}
if (biggerNumber < c) {
biggerNumber = c;
}
if (biggerNumber < d) {
biggerNumber = d;
}
if (biggerNumber < e) {
biggerNumber = e;
}
print(biggerNumber);

Решение 2:

a = gets();
b = gets();
c = gets();
d = gets();
f = gets();
if (a > b && a > c && a > d && a > f) {
print(a);
}
else if (b > a && b > c && b > d && b > f) {
print(b);
}
else if (c > a && c > b && c > d && c > f) {
print©;
}
else if (d > a && d > c && d > b && d > f) {
print(d);
}
else {
print(f);
}

Здравей,
второто решение има пропуски, поради липсата на опции за равенство.

Например при вход 5 5 2 3 1 тъй като a = b, няма да влезе нито в първия if, нито във втория и ще иде чак на else-a, oтпечатвайки 1 за резултат.

Първото решение изглежда супер, така че предполагам, че е само проблем при отпечатването на резултата. Виж дали са дали примерни input/output за това как трябва да изглеждат дробните и целите числа.

Да кажем, при примерен вход:
5.5 4 3 2 1
трябва да отпечаташ 5.5, а при вход:
5 4.5 3 2 1 или 5.0 4.5 3 2 1
трябва да отпечаташ 5, а не 5.0 (не знам това дали е нещо особено и как точно става в JS).

Успех!:slight_smile:

1 Like

Здрасти, много благодаря за бързият отговор! :))

В условието, което е дадено, пише, че output форматът е същият като input, така че не мисля, че грешката е там. В примерните числа дадени в задачата нещата също съвпадат. Иначе разбрах за решение 2 къде е проблемът, благодаря! За съжаление останалите задачи изглежда, че се чупят по същият начин :confused:

Здрасти пак,
понеже се изнервих на JS и на това, че очевидно вярната ти логика не минава, реших да се поразровя из нета.
Очевидно сравняването на int и float стойности в JS не работи както аз поне очаквам:)
Пробвах да парсвам стойностите към float преди да ги сравнявам и тестовете минаха (с твоя код).
Аз го видях от тук, нищо че питането там не е точно по темата на задачата https://stackoverflow.com/questions/21690070/javascript-float-comparison

Успех :grin:

1 Like

Здравей,
Моето решение за същата задача е почти едно към едно, с една разлика -> при повикване на gets() винаги слагам + отпред, например:
let a = +gets()

разликата е, че без този плюс отпред ‘а’ е от типа String, a ние искаме да е Number. С “+” отпред инпут-а се парсва като Number. Реално “+gets()” е shorthand за Number(a), но освен това мисля че judge не приемаше Number() затова винаги ползвам + за задачите.

3 Likes

Благодаря!!! :slight_smile:

Благодаря Алекс - пробвах с + пред gets(); и проработи :)) Благодаря! Сега ще опитам със същото на останалите задачи, за които нямах обяснение защо не минават.

Проработи и на другите задачи и работи - значи платформата няма проблем и аз не съм чак толкова зле :Р Благодаря на всички! : )

2 Likes

Super подсказка за + gets, добре че намерих тази тема !

И да попитам за идея, защо задачата за лихвата ми дава “Грешен Отговор” в системата на Телериг, а във VS Code е окей?

Благодаря :slight_smile:

let depositInitial = +gets()
let dpositFistYear = (depositInitial)*(1.05);
    print(dpositFistYear);
let deposit2Year = (dpositFistYear)*(1.05);
    print(deposit2Year);
let dposit3Year = (deposit2Year)*(1.05);
    print((dposit3Year).toFixed(2));

Вероятно защото по условие трябва да печаташ всички числа с два символа след десетичната запетая, а не само последното.

You must print the number with two numbers after the decimal point.

1 Like

Ааа, да. Благодаря Ти, Надя.
:slight_smile: