Loading...
Iskren.1990 avatar Iskren.1990 6 Точки

Задача 8 упражнение: Условни конструкции

Здравейте,

Изкарвам 86 точки на задачата (Тест 6 и 8 са грешни).

Знам и видях решения на задачата, искам да разбера къде греша.

function solve(input) {

let income = Number(input.shift());

let midRes = Number(input.shift());

let minSal = Number(input.shift());

 

let Scol = midRes * 25

let socScol = minSal * 0.35

 

if (midRes < 4.5) {

console.log(`You cannot get a scholarship!`);

}

 

if (midRes >= 5.5) {

if (income > minSal) {

console.log(`You get a scholarship for excellent results ${Math.floor(Scol)} BGN`);

} else if (Scol >= socScol) {

console.log(`You get a scholarship for excellent results ${Math.floor(Scol)} BGN`);

} else {

console.log(`You get a Social scholarship ${Math.floor(socScol)} BGN`);

}{

 

}

}

 

if (midRes < 5.5) {

if (income > minSal) {

console.log(`You cannot get a scholarship!`);

}

else {

console.log(`You get a Social scholarship ${Math.floor(socScol)} BGN`);

}

}

}

Тагове:
0
Programming Basics with JavaScript 05/08/2019 10:24:50
mark79 avatar mark79 639 Точки

Здравей,

макар да не е най-елегантното решение и това ще мине.

Трябва да се добави малка проверка в третия if, иначе при стойност под 4.5 ще влиза и в него.

    if (midRes >= 4.5 && midRes < 5.5) {

Друг вариант е да използваш if .. else конструкция на проверките, което също ще поправи нещата.

Поздрави :)

PS -> Тук може да разгледаш и едно по-кратко решение без толкова проверки.

0
05/08/2019 14:41:13
Iskren.1990 avatar Iskren.1990 6 Точки

Имаш в предвид :

if (midRes >= 5.5) {

if (income > minSal) {

console.log(`You get a scholarship for excellent results ${Math.floor(scol)} BGN`);

} else if (scol >= socScol) {

console.log(`You get a scholarship for excellent results ${Math.floor(scol)} BGN`);

} else {

console.log(`You get a Social scholarship ${Math.floor(socScol)} BGN`);

}

Не използвам && понеже се предполага, че до този момент не би трябвало да ги знам.

 

Благодаря, очевидно имам пропуски :)

0
05/08/2019 16:07:58
mark79 avatar mark79 639 Точки

Е, то не се предполага, че си запознат и с вложени условни конструкции, но ги ползваш.

Ето нагледно какво имам предвид.

    if (midRes < 4.5) {
        console.log(`You cannot get a scholarship!`);
    } else if (midRes >= 5.5) {
        if (income > minSal) {
            console.log(`You get a scholarship for excellent results ${Math.floor(Scol)} BGN`);
        } else if (Scol >= socScol) {
            console.log(`You get a scholarship for excellent results ${Math.floor(Scol)} BGN`);
        } else {
            console.log(`You get a Social scholarship ${Math.floor(socScol)} BGN`);
        }
    } else if (midRes < 5.5) {
        if (income > minSal) {
            console.log(`You cannot get a scholarship!`);
        } else {
            console.log(`You get a Social scholarship ${Math.floor(socScol)} BGN`);
        }
    }

Ако има нещо, което не е съвсем ясно - сега му е времето да питаш.

1
05/08/2019 16:51:19
Iskren.1990 avatar Iskren.1990 6 Точки

Бях го направил със същата логика и последователност, но с грешки в синтаксиса.

Вложената конструкция докарах по логика, затова съм я използвал.

Иии благодаря отново за съдействието, надявам се няма да откажеш рамо и за напред.

1
mark79 avatar mark79 639 Точки

Като цяло си се справил добре. Продължавай в същия дух.

0
Iskren.1990 avatar Iskren.1990 6 Точки

Извинявам се ако е нахално, но дали може някакъв контакт за още едно-две въпросчета?

0
mark79 avatar mark79 639 Точки

Здравей,

ако не е проблем за теб - питай тук. И да не съм аз, винаги ще има кой да ти помогне.

Поздрави :)

0
Iskren.1990 avatar Iskren.1990 6 Точки

  Нямах особено желание заради естеството на въпроса, но очевидно нямам избор.

Става въпрос за здача 6 от вложени условни конструкции. Или по-точно за синтаксиса.

Искам да изполвзам суич в суича, за да избегна голям обем, а и суич-овете ми изглеждат по-четливи и ясни.

За да избегна критики ще вмъкна, че знам как решението може да бъде по съкратено и както каза елегантно с да кажем нова променлива и по един конзол лог на кейс.

 

https://pastebin.com/pHdvyhB3?fbclid=IwAR31JhFXWyli3ZH8YzWb-DUozYh85_Mrymwvlv4SEc2Xdpm5Qa1VSh6LtoQ

 

Не съм я тествал с Джъдж.

Влиза в първият суич, прескача кейсовете и вади еррор от дефаулт. Не ми е ясно защо.

0
mark79 avatar mark79 639 Точки

Здравей,

ето решението на задачата с вложен switch. Поне според мен, по-краткият код не винаги е по-елегантен. Въпросът е, че при теб има доста повторяем код, което не е лошо да се опитваш да избегнеш. В моя примерен код може да видиш как можеш да го реализираш.

switch(expression) {
  case x:
    // code block
    break;
  case y:
    // code block
    break;
  default:
    // code block
}

Това е синтаксиса на switch-a. Всеки case трябва да завършва с break, а ако имаш няколко случая с един и същ код блок ги описваш и чак тогава break-ваш. И не е задължително да пишеш default, ако няма да го ползваш.

Пример :

switch(expression) {
  case a:
  case b:
    // code block
    break;
  case c:
  case d:
    // code block
    break;
}

Поздрави :)

PS -> Лично аз много уважавам тази конструкция и я ползвам винаги, когато имам "фиксирани" стойности.

Ако трябва да пишеш на Python, то там няма такава конструкция и пишеш if .. elif докато ти се изясни.

0
07/08/2019 13:17:19
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.