Професионална програма
Loading...
DimiPetrov avatar DimiPetrov 3 Точки

Simple Salculations - Exam задачи

Здравейте. Тези две задачи ги решавам успешно в конзолата, но Judge ми казва, че моят output е NaN, вместо числата, които конзолата изписва. Предполагам, че проблемът е идентичен, но ето и двете:

https://pastebin.com/XkygETX0

https://pastebin.com/FN9LvwP1

На тази задача конзолата изобщо не ми изкарва никакъв резултат - https://pastebin.com/EJd2nA7n

А тази ми излиза грешна (в Judge също ми дава NaN) - https://pastebin.com/6SFsc73M

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

P.S. Имам и още един въпрос: не мога да отворя файлa с условията на задачите More Exercises в Judge. При Exam задачите отварям само PDF файла. Има ли нужда от инсталиране на допълнителен софтуер (работя с Windows 10 и MS Word 2007)?

Благодаря предварително.

MartinBG avatar MartinBG 2783 Точки

В повечето от решенията си преобразуваш входните аргументи (стрингове) до нови променливи от числов тип, но по-долу в кода използваш директно входните аргументи (стринговете), вместо числовите променливи и от там ти идват NaN грешките. 

0
DimiPetrov avatar DimiPetrov 3 Точки

Може ли да ми обясниш по-подробно кое с кое трябва да заменя в условията? Опитах различни промени, но не стана. Благодаря.

0
MartinBG avatar MartinBG 2783 Точки

Не си дал условията на задачите и линкове към Judge, а и от и кода не става много ясно кое какво е, но например в тази задача създаваш някакви променливи bit, uan, com от аргументите, които по-късно не използваш, а същевременно аргументите (arg1, arg2 и arg3), които са стрингове, участват в математ. изчисления в кода (от там идва и NaN резултата)::

function convert(arg1, arg2, arg3) {
    bit = Number(arg1);
    uan = Number(arg2);
    com = Number(arg3);
 
    let valueBit = (arg1 * 1168);
    let dollar = Number(1.76);
    let valueUan = (arg2 * (0.15 * dollar));
    let euro = Number(1.95);
    let valueCom = (arg3 / 100) * ((valueBit + valueUan) / euro);
    console.log(((valueBit + valueUan) / euro - (valueCom)).toFixed(2));
}

Опитай така:

function convert(arg1, arg2, arg3) {
    let bit = Number(arg1);
    let uan = Number(arg2);
    let com = Number(arg3);
 
    let valueBit = (bit * 1168);
    let dollar = 1.76;
    let valueUan = (uan * (0.15 * dollar));
    let euro = 1.95;
    let valueCom = (com / 100) * ((valueBit + valueUan) / euro);
    console.log(((valueBit + valueUan) / euro - (valueCom)).toFixed(2));
}

 

0
21/04/2020 00:16:54
MartinBG avatar MartinBG 2783 Точки

@DimiPetrov

Оказа се, че в Judge входните параметри за тези задачи се подават като масив.

 

Един от начините за решаване на проблема е да се промени сигнатурата на функциите:

 

От:

function convert(arg1, arg2, arg3) { 
... 
}

На:

function convert( [ arg1, arg2, arg3 ] ) { 
... 
}

 

0
21/04/2020 14:20:54
DimiPetrov avatar DimiPetrov 3 Точки

Благодаря. 3 от 4-те задачи се получиха, по същия начин реших и още една задача от изпитните (Food delivery).

Единствено тази (Easter Lunch) ми се опъва (конзолата продължава да не изкарва резултат) - https://judge.softuni.bg/Contests/Practice/Index/1637#0  Към нея има и файл с авторско решение - отворих го, но някои команди още са ми непознати.

 

0