Lyubohd

07. Cinema Tickets

Jun 7th, 2020
1,121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.02 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class Main {
  4.     public static void main(String[] args) {
  5.         Scanner scan = new Scanner(System.in);
  6.  
  7.         String filmName = scan.nextLine(); // прочитаме името на филма
  8.         // инициализираме три променливи, които броят колко броя билети от всеки тип са продадени
  9.         int studentCnt = 0; // брояч за студентските билети
  10.         int standardCnt = 0; // брояч за стандартните билети
  11.         int kidCnt = 0; // брояч за детските билети
  12.         while (!"Finish".equals(filmName)) { // цикълът се изпълнява докато не въведем командата "Finish"
  13.             int capacity = Integer.parseInt(scan.nextLine()); // прочитаме капацитета на текущата зала
  14.             int counter = 0; // брояч на билетите, които са продадени за текущия филм
  15.             for (int i = 0; i < capacity; i++) { // цикъл, който ще се завърти, колкото места има в залата, освен ако не бъде прекъснат по-рано (може да се направи и с while цикъл)
  16.                 String ticketType = scan.nextLine(); // прочитаме текущият тип на продадения билет
  17.                 if ("End".equals(ticketType)) { // ако командата е "End" спираме прочитането на билетите за този филм
  18.                     break;
  19.                 }
  20.                 counter++; // увеличаваме броят на продадените билети за този филм NB: важно е увеличаването на билетите да бъде след проверката за "End"
  21.                 switch (ticketType) { // със switch проверяваме типът на билета, и увеличаваме нужният брояч
  22.                     case "student":
  23.                         studentCnt++;
  24.                         break;
  25.                     case "standard":
  26.                         standardCnt++;
  27.                         break;
  28.                     case "kid":
  29.                         kidCnt++;
  30.                         break;
  31.                 }
  32.             }
  33.             double percent = counter * 1.0 / capacity * 100; /* намираме колко процента от местата в текущата зала, са продадени
  34.             умножаваме counter по 1.0 за да го преобразуваме от int в double, ако не го направим, получаваме целочислено делене
  35.             за пример, ако counter е 15, а capacity 20, получаваме 15 / 20 * 100, което е 0 * 100 = 0%
  36.              когато го умножим по 1.0 минаваме на дробно делене, тоест 15 * 1.0 / 20 * 100 -> 15.0 / 20 * 100, 0.75 * 100 -> 75% */
  37.             System.out.printf("%s - %.2f%% full.%n", filmName, percent); // принтираме името на филма и процента запълненост на залата
  38.             filmName = scan.nextLine(); // прочитаме нов филм, ако не прочетем такъв, се получава безкраен цикъл
  39.         }
  40.  
  41.         int totalTickets = kidCnt + standardCnt + studentCnt; // намираме общият брой на билетите, за да открием процентите на всеки тип билет
  42.         System.out.printf("Total tickets: %d%n", totalTickets); // принтираме общият брой на билетите
  43.         // намираме процента на всеки тип билет по формулата, броя на билетите разделен върху броя на всички билети, умножено по 100 за да се превърне в проценти
  44.         double studentPercent = studentCnt * 1.0 / totalTickets * 100; // намираме процента на студентските билети
  45.         System.out.printf("%.2f%% student tickets.%n", studentPercent); // принтираме, колко процента от всички продадени билети са студентски
  46.         double standardPercent = standardCnt * 1.0 / totalTickets * 100; // намираме процента на стандартните билети
  47.         System.out.printf("%.2f%% standard tickets.%n", standardPercent); // принтираме, колко процента от всички продадени билети са стандартни
  48.         double kidPercent = kidCnt * 1.0 / totalTickets * 100; // намираме процента на детските билети
  49.         System.out.printf("%.2f%% kids tickets.", kidPercent); // принтираме, колко процента от всички продадени билети са детски
  50.     }
  51. }
Advertisement
Add Comment
Please, Sign In to add comment