Loading...
dZf1aeA-KlimentHristov avatar dZf1aeA-KlimentHristov 56 Точки

Cinema Tickets oт Nesten Loops - решена с While и For 100/100

Здравейте,

след цели 5 часа каде е проблема по задачата най накрая го реших 100 от 100  с кода ми !

Бях писал по рано да ми помогне някой но уви нямах късмет този път и се опитвах и го направих за което се радвам.

Тънките моменти бяха доста, и те объркаха доста сметките и всички други проби които правих!

Надявам се да разберете моя код:

package com.company;

import java.util.Scanner;

public class CinemaTickets{
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        String movie = scan.nextLine();

        int studentN = 0;
        int standardN = 0;
        int kidN = 0;

        double totalTickets = 0;
        double buyPlaces = 0;


        while (!movie.equals("Finish")) {
            String places = scan.nextLine();
            int placesNumber = Integer.parseInt(places);

            boolean isFinish = false;
            for (int i = 0;i < placesNumber; i++ ) {
                String type = scan.nextLine();

                switch (type) {
                    case "student":
                        studentN++;
                        break;
                    case "standard":
                        standardN++;
                        break;
                    case "kid":
                        kidN++;
                        break;
                }

                if (type.equals("Finish")){
                    isFinish = true;
                    break;
                }
                if (type.equals("End")) {
                    isFinish = false;
                    break;
                }
                buyPlaces++;
                totalTickets++;
            }
            if (isFinish){
                System.out.printf("%s - %.2f%% full.\n",movie,(totalTickets/placesNumber)*100.00);
                break;
            }
                System.out.printf("%s - %.2f%% full.\n",movie,(buyPlaces/placesNumber)*100.00);
                movie = scan.nextLine();
                buyPlaces = 0;
        }
        System.out.printf("Total tickets: %.0f\n",totalTickets);
        System.out.printf("%.2f%% student tickets.\n",(studentN /totalTickets)*100);
        System.out.printf("%.2f%% standard tickets.\n",(standardN /totalTickets)*100);
        System.out.printf("%.2f%% kids tickets.\n",(kidN /totalTickets)*100);
    }
}

 

Тагове:
0
Programming Basics with Java 04/04/2020 21:13:46
RosenRPetrov avatar RosenRPetrov 15 Точки

Здравей ! Пращам ти едно решение, което е много близо до твоето, но с някои разлики. Поздравление, че си се справил с задачата.

package ProgrammingBasicsJava;

import java.util.Scanner;

public class CinemaTickets {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        String movieName = scanner.nextLine();

        int student = 0;
        int standard = 0;
        int kid = 0;

        while (!"Finish".equalsIgnoreCase(movieName)) {
            int availableSeats = Integer.parseInt(scanner.nextLine());
            int peopleCount = 0;

            for (int check = 1; check <= availableSeats; check++) {
                String ticketType = scanner.nextLine();

                if ("student".equalsIgnoreCase(ticketType)) {
                    student++;
                } else if ("standard".equalsIgnoreCase(ticketType)) {
                    standard++;
                } else if ("kid".equalsIgnoreCase(ticketType)) {
                    kid++;
                } else if ("End".equalsIgnoreCase(ticketType)) {
                    break;
                }
                peopleCount++;
            }

            double percentageSeats = (peopleCount * 1.0 / availableSeats) * 100;
            System.out.printf("%s - %.2f%% full.%n", movieName, percentageSeats);

            movieName = scanner.nextLine();
        }
        int totalTickets = student + standard + kid;

        System.out.printf("Total tickets: %d%n%.2f%% student tickets.%n%.2f%% standard tickets.%n%.2f%% kids tickets."
                , totalTickets, (student * 1.0 / totalTickets * 100),
                (standard * 1.0 / totalTickets * 100),
                (kid * 1.0 / totalTickets * 100));
    }
}
1
dZf1aeA-KlimentHristov avatar dZf1aeA-KlimentHristov 56 Точки

Благодаря колега, твоето решение е без булева променлива, на мен ми беше трудно как да излезна от главния цикъл като се напише Финиш а не ЕНд :)

Защото фор-а си въртеше вътре и после на отпечатването имаше разлики. Интересно при теб е по съкратен вида на задачата, но се радвам че я разбрах с толкова мъки :).

 

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