Професионална програма
Loading...
+ Нов въпрос
simonakis avatar simonakis 0 Точки

Nested Loops- Lab. Задача 7- Cinema Tickets

Минавам и двата нулеви теста, а и си поиграх и тествах с няколко други инпута и все работи. 
Добавих и възможност функцията да се справя правилно ако въведените купени билети надвишат капацитета. 
И все пак в Judge всички освен нулевите тестове са ми грешни. 0/100. Не разбирам какво иска от мен. 
Ето кода:
https://pastebin.com/VmkDd6KC

Не е супер красив, ама тестван обстойно и работи. 

Ще съм благодарен ако хвърлите светлина върху дебрите на изискванията на Judge за тази задача. 

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

Тагове:
MartinBG avatar MartinBG 2783 Точки

Честно казано, доста се оплетох в логиката на решението Ви, затова направо поствам работещо такова, ако може да Ви е от полза:

 

function solve(input) {
  let standardTotal = 0;
  let studentTotal = 0;
  let kidTotal = 0;

  let movieName;
  while ((movieName = input.shift()) !== 'Finish') {
    let seatsTotal = Number(input.shift());
    let seatsUsed = 0;
    
    let command;
    while (seatsUsed < seatsTotal && (command = input.shift()) !== 'End') {
      seatsUsed++;
      switch (command) {
        case 'student':
          studentTotal++;
          break;
        case 'standard':
          standardTotal++;
          break;
        case 'kid':
          kidTotal++;
          break;
      }
    }
    
    let usedPercentage = (seatsUsed / seatsTotal * 100).toFixed(2);
    console.log(`${movieName} - ${usedPercentage}% full.`);
  }

  const totalTicketsSold = kidTotal + studentTotal + standardTotal;
  let studentPercentage = (studentTotal / totalTicketsSold * 100).toFixed(2);
  let standardPercentage = (standardTotal / totalTicketsSold * 100).toFixed(2);
  let kidPercentage = (kidTotal / totalTicketsSold * 100).toFixed(2);

  console.log(`Total tickets: ${totalTicketsSold}`);
  console.log(`${studentPercentage}% student tickets.`);
  console.log(`${standardPercentage}% standard tickets.`);
  console.log(`${kidPercentage}% kids tickets.`);
}

 

0
simonakis avatar simonakis 0 Точки

Съгласен съм, че кодът ми не е красив, но определено работи. Не съм използвал вложен цикъл и затова е може би объркващ и дълъг. 
Вашият работи в Judge, но сме да твърдя, че моят е по-обстоен, защото покрива и случая, когато за даден филм са зададени да речем 3 билета общо, а са купени (незнайно как, но това е безпредметно) повече от 3. С вашата функция изходът е бъгнат, а при мен дори това работи. 

Даже за други инпути също се бъгва в VSC.Ето например пробвайте с този инпут:
"solve (["Movie1", "2", "kid", "kid", "End", "Movie2", "10", "kid", "student", "standard", "End", "Movie3", "5", "kid", "kid", "student", "End", "Movie4", "2", "kid", "kid", "Finish"])

В VSC се бъгва, изписва филм с име "End" и влиза в безкраен цикъл даже. Не разбирам защо Judge приема този код с 100% вярност?!

Интересно ми е защо в Judge и двата нулеви теста ми ги изписва верни, но нито един от следващите не са верни, особено при положение че съм тествал над 20 различни инпута и на всички работи правилно.
Малко е изнервящ тоя Judge....

0
19/05/2020 09:28:49
MartinBG avatar MartinBG 2783 Точки

@simonakis

Може условието да Ви обърква, но инпута, с който тествате е невалиден.

По условие, билети за един филм се продават, докато следните две условия изпълнени:

- има свободни места ( seatsUsed < seatsTotal )

- не е получена команда "End"

Кoгато свършат билетите, не се подава команда "End", а направо заглавие на следващ филм (или "Finish"):

solve (["Movie1", "2", "kid", "kid", "End", "Movie2", "10", "kid", "student", "standard", "End", "Movie3", "5", "kid", "kid", "student", "End", "Movie4", "2", "kid", "kid", "Finish"])

0
19/05/2020 12:33:13
simonakis avatar simonakis 0 Точки

Ето това е проблемът... Явно когато свършат билетите няма инпут "End"... Трябваше в примерните нулеви inputs да бяха дали пример точно с това. 
Ся като оправя задачата така би трябвало да стане. Ако ли не- вдигам ръце. Поне фундаментално я разбирам :D

0