JAVA, Nested Loops - Lab, 07. Cinema Tickets
Условие:
7. *Билети за кино
Вашата задача е да напишете програма, която да изчислява процента на билетите за всеки тип от
продадените билети: студентски(student), стандартен(standard) и детски(kid), за всички прожекции. Трябва
да изчислите и колко процента от залата е запълнена за всяка една прожекция.
Вход
Входът е поредица от цели числа и текст:
На първия ред до получаване на командата "Finish" - име на филма – текст
На втори ред – свободните места в салона за всяка прожекция – цяло число [1 … 100]
За всеки филм, се чете по един ред до изчерпване на свободните места в залата или до получаване на
командата "End":
o Типа на закупения билет - текст ("student", "standard", "kid")
Изход
На конзолата трябва да се печатат следните редове:
След всеки филм да се отпечата, колко процента от кино залата е пълна
"{името на филма} - {процент запълненост на залата}% full."
При получаване на командата "Finish" да се отпечатат четири реда:
o "Total tickets: {общият брой закупени билети за всички филми}"
o "{процент на студентските билети}% student tickets."
o "{процент на стандартните билети}% standard tickets."
© SoftUni – https://softuni.org. Copyrighted document. Unauthorized copy, reproduction or use is not permitted.
Follow us: Page 1 of 1
o "{процент на детските билети}% kids tickets."
Примерен вход и изход
Вход Изход Обяснения
Taxi
10
standard
kid
student
student
standard
standard
End
Scary Movie
6
student
student
student
student
student
student
Finish
Taxi - 60.00% full.
Scary Movie - 100.00% full.
Total tickets: 12
66.67% student tickets.
25.00% standard tickets.
8.33% kids tickets.
Първи филм – Taxi, местата в залата са 10
Купуват се 3 стандарти, 2 студентски, 1 детски билет
и получаваме командата End.
Общо 6 билета от 10 места -> 60% от залата е заета.
Втори филм – Scary Movie, места в залата са 6
Купуват се 6 студентски билета и местата в залата
свършват.
Общо 6 билета от 6 места -> 100% от залата е заета.
Получаваме командата Finish
Общо закупените билети за всички филми са 12.
За всички филми са закупени общо:
8 студентски билета. 8 билета от общо 12 е 66.67%
3 стандартни билета. 3 билета от общо 12 е 25%
1 детски билет. 1 билет от общо 12 е 8.33%
Вход Изход Обяснения
The Matrix
20
student
standard
kid
kid
student
student
standard
student
End
The Green Mile
17
student
standard
standard
student
standard
student
End
Amadeus
3
standard
standard
standard
Finish
The Matrix - 40.00% full.
The Green Mile - 35.29% full.
Amadeus - 100.00% full.
Total tickets: 17
41.18% student tickets.
47.06% standard tickets.
11.76% kids tickets.
Първи филм – The Matrix, местата в залата са 20
Купуват се 2 стандартни, 4 студентски, 2 детски
билета и получаваме командата End.
Общо 8 билета от 20 места -> 41.18% от залата е заета
Втори филм - The Green Mile, местата в залата са 17
Купуват се 3 стандартни, 3 студентски билета и
получаваме командата End.
Общо 6 билета от 17 места -> 47.06% от залата е заета
Трети филм – Amadeus, местата в залата са 3
Купуват се 3 стандартни билета и местата в залата
свършват.
Общо 3 билета от 3 места -> 100% от залата е заета.
Получаваме командата Finish
Общо закупените билети за всички филми са 17.
За всички филми са закупени общо:
7 студентски билета. 7 билета от общо 17 е 41.18%
8 стандартни билета. 8 билета от общо 17 е 47.06%
2 детски билета. 2 билета от общо 17 е 11.76%
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Моят проблем:
Резултатът на моите тестове е по някакъв начин различен от този на Judge-a , макар да въвеждаме едни и същи стойности на променливите. Тук не ми дава да пратя скрийншот, но проблемат е такъв: На първия пример, където имената на филмите са "Taxi" и "Scary Movie" , ако аз инициализирам променливите в Intelij, ми излиза Total tickets: 2.0,а в Judge илиза само 2, което прави грешка на всяка една от проверките и 0/100 точки. Бих искал помощ да разбера дали грешката е моя, или на Judge, и как да пращам скрийншоти тук. Копчето "image" не работи както си мислех, а не реаргира, когато довлача снимките от мястото им на съхранение.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Моят код:
import java.util.Scanner; public class CinemaTickets { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String moveiname = ""; String typeofperson = ""; int seats; double occupiedseats = 0; int students = 0; int kids = 0; int standard = 0; boolean endofthefilm = false; double percentagefull; double allpeople = 0; double studentpercentage = 0; double standardpercentage = 0; double kidspercentage = 0; while (!moveiname.equals("Finish")) { moveiname = scan.nextLine(); if (moveiname.equals("Finish")) { break; } seats = Integer.parseInt(scan.nextLine()); while (occupiedseats < seats) { typeofperson = scan.nextLine(); switch (typeofperson) { case ("student"): students++; break; case ("standard"): standard++; break; case ("kid"): kids++; break; case ("End"): endofthefilm = true; break; } if (endofthefilm == true) { break; } occupiedseats++; } percentagefull = occupiedseats / seats; percentagefull = percentagefull * 100; System.out.print(moveiname); System.out.print(" - "); System.out.printf("%.2f", percentagefull); System.out.print("%"); System.out.println(" full."); seats = 0; occupiedseats = 0; percentagefull = 0; endofthefilm = false; } allpeople = students + standard + kids; studentpercentage = students / allpeople; standardpercentage = standard / allpeople; kidspercentage = kids / allpeople; studentpercentage = studentpercentage * 100; standardpercentage = standardpercentage * 100; kidspercentage = kidspercentage * 100; double totaltickets = allpeople; System.out.print("Total tickets: "); System.out.printf("%.1f", totaltickets); //ето тук би трябвало да е проблема System.out.println(""); System.out.printf("%.2f", studentpercentage); System.out.println("% student tickets."); System.out.printf("%.2f", standardpercentage); System.out.println("% standard tickets."); System.out.printf("%.2f", kidspercentage); System.out.println("% kids tickets."); } }
Благодаря предварително!