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.");
}
}
Благодаря предварително!