Loading...
GeorgyGenchev avatar GeorgyGenchev 1 Точки

Проблем с Cinema Tickets - Nested Loops JS

Здравейте, 

Някой ако може да ми намери грешката получава една бира директно! :D

Та в judge минавам Zero тестовете, но след това съм на 30% и да си кажа честно не знам от къде идва грешката.

function tickets(input){

    let index = 0

    let movie = input[index];

    index++

    let freeSeats = Number(input[index]);

    let command = input[index];

    let counterKids = 0;

    let counterStudents = 0;

    let counterStandarts = 0;

    let counterUsedSeats = 0;

    let totalTickets = 0

    while(command !== "Finish"){

        let ticket = input[index];

        

        let capacity = counterUsedSeats / freeSeats * 100

        if(ticket === "kid"){

            counterKids ++;

            counterUsedSeats++;

            totalTickets++;

        }else if(ticket === "student"){

            counterStudents ++;

            counterUsedSeats++;

            totalTickets++;

        }else if(ticket === "standard"){

            counterStandarts ++;

            counterUsedSeats ++;

            totalTickets++;

        }else if(ticket === "End"){

            console.log(`${movie} - ${capacity.toFixed(2)}% full.`);

            index++;

            movie = input[index];

            index++;

            if(movie === "Finish"){

                break;

            }

            freeSeats = Number(input[index]);

            counterUsedSeats = 0;

        }else if(counterUsedSeats >= freeSeats){

            console.log(`${movie} - ${capacity.toFixed(2)}% full.`);

            index++;

            movie = input[index];

            index++;

            if(movie === "Finish"){

                break;

            }

            freeSeats = Number(input[index]);

            counterUsedSeats = 0;

        }

        

        if(ticket === "Finish"){

            break;

        }

        index++

      

    }console.log(`Total tickets: ${totalTickets}`);

    console.log(`${((counterStudents /  totalTickets) * 100).toFixed(2)}% student tickets.`);

    console.log(`${((counterStandarts /  totalTickets) * 100).toFixed(2)}% standard tickets.`);

    console.log(`${((counterKids /  totalTickets) * 100).toFixed(2)}% kids tickets.`);

}

 

Тагове:
0
Programming Basics
MartinBG avatar MartinBG 4616 Точки

Решението е твърде усложнено заради използването на излишни променливи, индекс при прочитането на входните данни (input[index] вместо input.shift()) и повтаряем код.

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

Препоръчвам Ви да помислите как да опростите решението и най-вероятно сам ще откриете грешката.

Прилагам алтернативно решение - питайте, ако има нещо неясно по него:

function tickets(input) {
  let counterKids = 0;
  let counterStudents = 0;
  let counterStandards = 0;

  let movie;
  while ((movie = input.shift()) !== 'Finish') {
    let totalSeats = Number(input.shift());
    let usedSeats = 0;

    let ticketType;
    while (usedSeats < totalSeats && (ticketType = input.shift()) !== 'End') {
      usedSeats++;
      if (ticketType === 'kid') {
        counterKids++;
      } else if (ticketType === 'student') {
        counterStudents++;
      } else if (ticketType === 'standard') {
        counterStandards++;
      }
    }

    console.log(`${movie} - ${(usedSeats * 100.0 / totalSeats).toFixed(2)}% full.`);
  }

  let totalTickets = counterKids + counterStudents + counterStandards;

  console.log(`Total tickets: ${totalTickets}`);
  console.log(`${((counterStudents / totalTickets) * 100).toFixed(2)}% student tickets.`);
  console.log(`${((counterStandards / totalTickets) * 100).toFixed(2)}% standard tickets.`);
  console.log(`${((counterKids / totalTickets) * 100).toFixed(2)}% kids tickets.`);
}

 

0
07/12/2020 00:51:46
GeorgyGenchev avatar GeorgyGenchev 1 Точки

Много благодаря, начина по който ми показахте е страхотен! Реших си още няколко задачи с него и нямаше подобни проблеми с оплитането!
Чувствам се една идея по сигурен за изпита! :D 
P.s.
Друг ще поствам както условиeto така и някакъв input!
 

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