Loading...
BorisDamyanov avatar BorisDamyanov 1 Точки

Помощ със задача Passengers Per Flight

Здравейте. Не мога да реша задачата Passengers Per Flight или Задача 6. Пътници на полет.

Условието е следното:

Напишете програма, която проследява колко пътници средно на полет има всяка авиокомпания. Всеки ден има определен брой авиокомпании, които имат полети. До получаване на команда "Finish" получавате брой пътници на полет. Трябва да изчислите средния брой пътници на полет на авиокомпания (закръглени към по-малкото цяло число).

Вход:

Първоначално от конзолата се прочита броя на авиокомпаниите цяло число в интервала [1… 20]

След това за всяка авиокомпания се прочита:

  • Името на авиокомпанията – текст
  • До получаване на командата "Finish" се чете:
    • Брой пътници на полет  – цяло число в интервала [1... 360]

Изход:

След прочитането на всички пътници на дадена компания на конзолата се отпечатва един ред:

  • "{името на авиокомпанията}: {средният брой пътници на полет} passengers."

След като излетят всички полети на всички авиокомпании се отпечатва един ред:

  • "{името на авиокомпанията с най-много пътници на полет} has most passengers per flight: {среният брой пътници на полет}"

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

Вход

Изход

Обяснения

3

WizzAir

180

230

100

Finish

BulgariaAir

50

60

90

Finish

Lufthansa

260

320

Finish

WizzAir: 170 passengers.

BulgariaAir: 66 passengers.

Lufthansa: 290 passengers.

Lufthansa has most passengers per flight: 290

Днес полети имат 3 авиокомпании.

Авиокомпания WizzAir има 3 полета – 180, 230 и 100 пътници – общо 510. Средно 170 пътници на полет.

Авиокомпания BulgariaAir има 3 полета – 50, 60, 90 пътници – общо 200. Средно 66 пътници на полет.

Авиокомпания Lufthansa има 2 полета – 260 и 320 пътници – общо 580. Средно 290 пътници на полет.

Авиокомпания Lufthansa има най-много пътници средно на полет – 290.

2

Qatar Airways

95

231

323

Finish

LOT

76

89

55

Finish

Qatar Airways: 216 passengers.

LOT: 73 passengers.

Qatar Airways has most passengers per flight: 216

 

 

Това е решението ми но с него не мога да стигна до никъде.

import java.util.Scanner;
import java.util.WeakHashMap;

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

        int flights = Integer.parseInt(scanner.nextLine());
        int totalPeople = 0;

        String companyName = "";

        for (int i = 0; i < flights; i++) {

            String input = scanner.nextLine();
            companyName = input;

            while (!input.equals("Finish")) {
                
                int people = Integer.parseInt(input);
                totalPeople += people;
            }

            System.out.println(companyName);
            System.out.println(totalPeople);
input = scanner.nextLine();


        }

    }

}

 

Проблема според мен е, че когато програмат влезе в While цикъла чете само числа и след като се въведе Finish дава грешка. Благодаря.

 

 

Тагове:
0
Programming Basics
MartinBG avatar MartinBG 4803 Точки

От примерите към задачата става ясно, че ще ни трябвата два цикъла:

 

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

        int flightCompaniesCount = Integer.parseInt(scanner.nextLine());

        for (int i = 0; i < flightCompaniesCount; i++) {
            String companyName = scanner.nextLine();
            int totalCompanyPassengers = 0;
            int flightsCount = 0;

            while (true) {
                String command = scanner.nextLine();
                if ("Finish".equals(command)) {
                    break;
                }

//.....
            }

//.....
            System.out.printf("%s: %d passengers.%n", companyName, averagePassengersPerFlight);
        }
    }
}

 

1
BorisDamyanov avatar BorisDamyanov 1 Точки

Здравейте. Почти реших задачата но имам проблем с изписването на името на авиокомпанията която има най-много пътници. Вместо име излизча послднито въведено число. Благодаря за помощта.

import java.util.Scanner;

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

        int n = Integer.parseInt(scanner.nextLine());
        String companyName = "";
        int sum = 0;
        int counter = 0;
        String topCompany = "";
        int mostPeople = 0;


        for (int i = 0; i < n; i++) {
            int maxNumber = 0;

            String input = scanner.nextLine();
            companyName = input;



            while (!input.equals("Finish")) {

                if (sum > maxNumber) {
                    maxNumber = sum / counter;
                    mostPeople = maxNumber;
                    topCompany = companyName;

                }

                input = scanner.nextLine();


                if (input.equals("Finish")) {
                    break;
                }
                int people = Integer.parseInt(input);
                counter++;
                sum += people;
            }

            System.out.println(companyName);
            System.out.println(sum / counter);
            counter = 0;
            sum = 0;

        }
        System.out.printf("%s has most passengers per flight: %d", topCompany, mostPeople);

    }
}
0
MartinBG avatar MartinBG 4803 Точки

Изнесете проверката от вътрешния цикъл:

 

        for (int i = 0; i < n; i++) {
            // ...

            while (!input.equals("Finish")) {
            // ...
            }

            if (sum / counter > mostPeople) {
                mostPeople = sum / counter;
                topCompany = companyName;
            }

            // ...
        }

 

1
BorisDamyanov avatar BorisDamyanov 1 Точки
import java.util.Scanner;

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

        int n = Integer.parseInt(scanner.nextLine());
        String companyName = "";
        int sum = 0;
        int counter = 0;
        String topCompany = "";
        int mostPeople = 0;
        int topCompanyByNrOfPasagers = 0;

        for (int i = 0; i < n; i++) {
            int maxNumber = 0;

            String input = scanner.nextLine();
            companyName = input;
            char symbol = companyName.charAt(0);
            boolean isSymbol = false;

            if (symbol >= 65 && symbol <= 90) {
                isSymbol = true;
            }

            if (isSymbol) {
                topCompany = companyName;
            }

            while (!input.equals("Finish")) {
                if (sum > maxNumber) {
                    maxNumber = sum / counter;
                    mostPeople = maxNumber;
                }
                input = scanner.nextLine();

                if (input.equals("Finish")) {
                    break;
                }
                int people = Integer.parseInt(input);
                counter++;
                sum += people;
            }

            if (sum / counter > topCompanyByNrOfPasagers) {
                mostPeople = sum / counter;
                topCompany = companyName;
            }

            System.out.println(companyName);
            System.out.println(sum / counter);
            counter = 0;
            sum = 0;

        }
        System.out.printf("%s has most passengers per flight: %d", topCompany, mostPeople);
    }
}
Това е последния код до който стигнах. При въвеждане на първия тест всичко работи:

3

WizzAir

180

230

100

Finish

BulgariaAir

50

60

90

Finish

Lufthansa

260

320

Finish

 

но при въвеждането на втория вместо Катар изписва Лот. 

2

Qatar Airways

95

231

323

Finish

LOT

76

89

55

Finish

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

0
MartinBG avatar MartinBG 4803 Точки

Примерно решение:

import java.util.Scanner;

public class PassengersPerFlight {

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

        final int flightCompaniesCount = Integer.parseInt(scanner.nextLine());

        String bestCompanyName = "";
        int bestCompanyAveragePassengers = -1;

        for (int i = 0; i < flightCompaniesCount; i++) {
            final String companyName = scanner.nextLine();
            int totalPassengers = 0;
            int flightsCount = 0;

            String command;
            while (!"Finish".equals(command = scanner.nextLine())) {
                totalPassengers += Integer.parseInt(command);
                flightsCount++;
            }

            final int averagePassengers = (flightsCount > 0) ? totalPassengers / flightsCount : 0;

            if (bestCompanyAveragePassengers < averagePassengers) {
                bestCompanyName = companyName;
                bestCompanyAveragePassengers = averagePassengers;
            }

            System.out.printf("%s: %d passengers.%n", companyName, averagePassengers);
        }

        System.out.printf("%s has most passengers per flight: %d%n", bestCompanyName, bestCompanyAveragePassengers);
    }
}

 

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