Loading...
radina940729 avatar radina940729 0 Точки

Проблем със задача Time + 15 minutes от Conditional Statements

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

 

function solve(hours, minutes) {

    hours = Number(hours);

    minutes = Number(minutes);

    let totalMins = hours * 60 + minutes + 15; 

    let newhours = Math.floor(totalMins / 60);

    let newMins = totalMins % 60 

 

    if (23 >= newhours >= 0 && 59 >= newMins >= 10) {

        console.log(`${newhours}:${newMins}`)

    } else if(23 >= newhours >= 0 && newMins < 10) {

        console.log(`${newhours}:0${newMins}`)

    } else if (newhours >=24 && newMins < 10) {

        console.log(`0:0${newMins}`);

    } else if (newhours >= 24 && 10 <= newMins <= 59) {

        console.log(`0:${newMins}`);        

    } else if (newMins >= 60 && 0 <= newhours <= 23) {

        newhours += 1

        newMins = newMins % 60

        console.log(`${newhours}:${newMins}`);

    } 

}

Тагове:
mttnu avatar mttnu 82 Точки

Проблемът е в проверките.
1) "23 >= newhours >= 0 && 59 >= newMins >= 10" - това е невалиден синтаксис. В JS не може да се проверява дали едно нещо е по-малко от второ и по-голямо от трето по този начин.
Може да е "23 >= newhours && newhours >= 0 && 59 >= newMins && newMins >= 10".
Така ще работи, но това води до вторият проблем - логиката на проверките е ненужно усложнена... и грешна.

Ето един пример с пренаписани проверки и коментари с разяснения:

function solve(hours, minutes) {
  hours = Number(hours);
  minutes = Number(minutes);

  let totalMins = hours * 60 + minutes + 15;
  let newHours = Math.floor(totalMins / 60);
  let newMins = totalMins % 60;

  if (newHours === 24) { //проверяваме дали часовете са 24
    newHours = 0; // ако часовете са 24, правим ги на 0
    if (newMins < 10) { // проверяваме дали минутите са по-малко от 10
      console.log(`${newHours}:0${newMins}`); // ако са - добавяме водещя 0, за да може винаги да се визуализира двуцифрено число.
    } else {
      console.log(`${newHours}:${newMins}`); // ако са 10 и нагоре - просто изпринтваме минутите.
    }
  } else if (newMins < 10) { // Ако изпълнението на програмата стигне до този else if, значи часовете са по-малко от 24 и няма нужда да ги модифицираме. Единствено трябва да проверим дали минутите са по-малко от 10.
    console.log(`${newHours}:0${newMins}`); // тук правим същата проверка
  } else { // ако изпълнението на програмата стигне до този else, значи часовете не са = 24 и минутите са < 10, значи просто изпринтваме стойностите.
    console.log(`${newHours}:${newMins}`);
  }
}

 

1
StanIvanov avatar StanIvanov 0 Точки

Много благодаря! Чудихме се с приятелката ми с часове.. :D 

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