Loading...
LilianaVelvheva avatar LilianaVelvheva 17 Точки

Къде ми е грешката в тази задача и защо judge ми дава 0 точки?

https://pastebin.com/de2Fhpw4

Задача 4. Кино

От кино ви наемат да напишете програма, чрез която да разберете дали на една прожекцията ще се запълни залата и колко пари ще се изкарат от нея. Получавате места в залата и на всеки следващ ред до команда "Movie time!", колко хора влизат в залата. Цената на един билет е 5 лв. Ако текущия брой хора влезли в залата се дели на 3 без остатък, се прави отстъпка 5лв от общата им сметка.

Ако в залата се опитат да влязат повече хора от колкото места са останали, то се счита че местата са изчерпани и програмата трябва да приключи четенето на вход.

Вход

От конзолата се четат:

  • На първия ред - капацитет на залата - цяло число в интервала [50... 150]

На всеки следващ ред до команда "Movie time!":

  • Брой хора влизащи в киното - цяло число в интервала [1… 15]

Изход

На конзолата първо да се отпечата един ред:

  • При получена команда "Movie time!":

 "There are {останали места} seats left in the cinema."

  • При изчерпване на местата в залата:

                "The cinema is full."

След това да се отпечата:

       "Cinema income - {приходи от залата} lv."

Примерен вход и изход

Вход

Изход

Обяснения

60

10

6

3

20

15

Movie time!

There are 6 seats left in the cinema.

Cinema income - 255 lv.

Първо получаваме капацитет на залата - 60 места. На следващият ред получаваме хората, които са влезли в залата - 10. Парите, който те ще заплатят са 10 * 5 = 50. След това получаваме, че в залата влизат 6 човека, тяхната бройка се дели на 3 и плащат с 5 лв. по-малко. Аналогично продължаваме до команда  "Movie time!" като принтираме съответният изход.

50

15

10

10

15

5

The cinema is full.

Cinema income - 240 lv.

 

100

10

10

10

10

10

10

10

10

10

10

Movie time!

There are 0 seats left in the cinema.

Cinema income - 500 lv.

 

Тагове:
0
Programming Basics
Vesela_5 avatar Vesela_5 40 Точки
function cinema(input) {
    let capacityOfHall = input[0]; // взимаш капацитета на залата
    let index = 1; // започваш да взимаш хората от индекс 1
    let people = input[index]; // това е еквивалентно на input[1]
    
    let totalPeople = 0; // в тази променлива добавяш хората
    let totalMoney = 0; // в тази променлива добавяш парите
    let isFull = false; // това е boolean, с който да брейкнеш, когато капацитета се запълни
    
    while (people !== "Movie time!") {
        totalPeople += people; // добавяш влезлите хора в киното
        
        if (capacityOfHall < totalPeople) { // ако хората станат повече от капацитета, влизаш в тази проверка
            isFull = true;
            break; // капацитета е достигнат, излизаш от while цикъла
        }
        
        totalMoney += people * 5; // умножаваш хората по 5лв цена на билет и добавяш сумата към тотала
    		if (people % 3 === 0) { // ако количеството хора се дели на 3 без остатък, правиш 5лв отстъпка
       			totalMoney -= 5; // вадиш 5те лева от общата сума
    		}

        index++; // инкрементираш индекса
        people = input[index]; // взимаш следващия индекс
    }
    
     if (!isFull) { // проверяваш дали си излязла от цикъла и има все още празни места в киното
     		let diff = capacityOfHall - totalPeople; // ако има, пресмяташ разликата
     		console.log(`There are ${diff} seats left in the cinema.`);	
     } else {
     		console.log(`The cinema is full.`); // печаташ, че кино залата е пълна 
     }
        
     console.log(`Cinema income - ${totalMoney} lv.`); // печаташ общата сума
}
 
cinema([60, 10, 6, 3, 20, 15, "Movie time!"]);
cinema([50, 15, 10, 10, 15, 5]); // тук няма команда за излизане от while цикъла
cinema([100, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, "Movie time!"]);

Не виждам как броиш колко хора са влезли, дали са повече или по-малко от капацитета на залата, не виждам да сумираш някъде общата сума пари и не виждам и да правиш проверка за "Ако текущия брой хора влезли в залата се дели на 3 без остатък, се прави отстъпка 5лв от общата им сметка."

Реших задачата, прегледай я, добавих и коментари.

2
LilianaVelvheva avatar LilianaVelvheva 17 Точки

Благодаря много за подробните обяснения. Разбрах всичко за решението на задачата.

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