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

Може ли хелп за тези задачи на Java PB - 06 - 10?

Здравейте, затруднявам се да ги направя тези задачи

 

06. Equal Sums Left Right Position
07. Sum Prime Non Prime
10. Party Invitation

от тези тестове: https://judge.softuni.bg/Contests/Compete/Index/1165#6

Ето условията:

 

06. Еднакви суми на леви и десни позиции

Напишете програма, която чете от конзолата две петцифрени цели числа в диапазона от 10000 до 99999. Първото число винаги ще бъде по-малко от второто. Да се намерят и отпечатат на конзолата, разделени с интервал, онези числа, които се намират между прочетените от конзолата числа и отговарят на следните условия:

  • сумите от двете най-десни и двете най-леви цифри на проверяваното число да са равни
  • ако сумите са различни към по-малката от тях се прибавя средната цифра, на проверяваното число и получената нова сума се сравнява с другата сума. Ако те са равни числото се отпечатва.

Ако няма числа, отговарящи на условията на конзолата не се извежда резултат.

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

Вход

Изход

Обяснения

10000

10100

10001 10010 10100

Първото генерирано число за проверка е 10000.  Разделяме числото на 3 групи - двете най- десни цифри, двете най- леви и средната. Сумата на двете най- десни цифри е 0+0=0, а тази на двете най- -леви 0+1=1. Тъй като сумата на десните цифри е по-малка от сумата на левите към нея прибавяме средната цифра 0+0=0. Получаваме 0. Сравняваме новополучената сума със сумата на левите цифри. Те не са равни, числото не отговаря на условието и не се отпечатва.

Следващото число за проверка е 10001. Сумата на десните цифри е 1+0=1, а на левите 0+1=1. Двете суми са равни и не е нужно да извършваме някакви действия със средната цифра. Числото се отпечатва на конзолата.

Следващото число е 10002. Не отговаря на условията и не се отпечатва.

……

Последното число за проверка е 10100. Сумата на десните цифри е 0+0=0, на левите 0+1=1. Дясната сума е по-малка и затова към нея прибавяме средната цифра 0+1=1. Новополучената сума сравняваме със сумата на левите цифри. Двете суми са равни, числото отговаря на условията и се отпечатва.

Вход

Изход

Вход

Изход

Вход

Изход

12345

12666

12351 12360 12403 12407 12412 12416 12421 12425 12430 12434 12443 12452 12461 12470 12503 12508 12512 12517 12521 12526 12530 12535 12544 12553 12562 12571 12580 12603 12609 12612 12618 12621 12627 12630 12636 12645 12654 12663

99000

99199

99099 99189 99198 99199

19995

20000

 

 

07. Суми прости и непрости числа

Напишете програма, която чете от конзолата цели числа в диапазона от -2,147,483,648 до 2,147,483,647, докато не се получи команда "stop". Да се намери сумата на всички въведени прости и сумата на всички въведени непрости числа. Тъй като по дефиниция от математиката отрицателните числа не могат да бъдат прости, ако на входа се подаде отрицателно число да се изведе следното съобщение "Number is negative.". В този случай въведено число се игнорира и не се прибавя към нито една от двете суми, а програмата продължава своето изпълнение, очаквайки въвеждане на следващо число.

На изхода да се отпечатат на два реда двете намерени суми в следния формат:

"Sum of all prime numbers is: {prime numbers sum}"

"Sum of all non prime numbers is: {nonprime numbers sum}"

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

Вход

Изход

Обяснения

3

9

0

7

19

4

stop

Sum of all prime numbers is: 29

Sum of all non prime numbers is: 13

Първото въведено число е 3. То е просто и го прибавяме съм сумата на простите числа.

Следващото число е 9. То не е просто и го прибавяме към сумата на непростите числа.

Числото 0 не е просто число и го прибавяме към сумата на непростите числа. Сумата става 9+0=9.

Следващите две числа са 7 и 19. Те са прости и всяко едно от тях го прибавяме към сумата на простите числа. 3+7=10 и 10+19=29.

Следва числото 4, което не е просто и го прибавяме към съответната сума 9+4=13.

Получаваме команда stop. Програмата прекъсва своето изпълнение и отпечатваме двете суми.

Вход

Изход

Вход

Изход

30

83

33

-1

20

stop

Number is negative.

Sum of all prime numbers is: 83

Sum of all non prime numbers is: 83

0

-9

0

stop

Number is negative.

Sum of all prime numbers is: 0

Sum of all non prime numbers is: 0

 

10 .**Покана за парти

Алекс организира парти. Покана ще получат само тези, които напишат своето име валидно (едно име е валидно когато съдържа единствено букви от латинската азбука). Подаръкът Ви за Алекс е да напишете програма, която чете имена докато не се получи командата "Statistic" и изчислява процента на хората които ще дойдат, и на тези които няма да дойдат на партито. Също така трябва да се погрижите всяко едно валидно име да бъде изписано в правилният формат - с първа главна буква и всяка следваща малка.

От конзолата се четат поредица от стрингове, всеки на отделен ред.

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

  • Ако името НЕ e валидно:  "Invalid name."
  • Ако името E валидно: "{Името във коректен формат}"
    • Ако името започва с главна буква и всичко останали са малки, се печата без промени.
    • Ако НЕ е в коректният формат, то трябва да се промени. Пример: "StoYAn" -> "Stoyan"

След получаване на командата "Statistic" да се отпечатат на конзолата 2 реда:

  • Първи ред - "Valid names are {процентa на валидните имена}% from {броят на имената} names."
  • Втори ред - "Invalid names are {процентa на невалидните имена}% from {броят на имената} names."

Процентите да са форматирани до втората цифра след десетичната запетая.

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

Вход

Изход

Обяснения

Pesho

Go6o

iVaN

*B0b1$

StAMaT

Ivo

Statistic

Pesho

Invalid name!

Ivan

Invalid name!

Stamat

Ivo

Valid names are 66.67% from 6 names.

Invalid names are 33.33% from 6 names.

Pesho – валидно и форматирано име, остава без промяна.

Go6o – 6 е невалиден символ за име.

IvaN – е валидно име, но не е подходящ формат, затова го форматираме -> Ivan.

*B0b1$ - името съдържа невалидни символи.

StAMat – е валидно име, но не е в подходящ формат, затова го форматираме-> Stamat.

Ivo – е валидно и форматирано име, остава без промяна.

Брой въведени имена: 6

Невалидни: 2, което е 66.67% процента от 6

Валидни: 4, което е 33.33% процента от 6

Вход

Изход

Вход

Изход

@sen

T0d0r

Ka1oqn

100qn

Statistic

Invalid name!

Invalid name!

Invalid name!

Invalid name!

Valid names are 0.00% from 4 names.

Invalid names are 100.00% from 4 names.

hriSTO

EmIl

MaRiYa

Statistic

Hristo

Emil

Mariya

Valid names are 100.00% from 3 names.

Invalid names are 0.00% from 3 names.

0
Programming Basics with Java 25/10/2018 04:36:50
vangel avatar vangel 51 Точки

06. Equal Sums Left Right Position

import java.util.Scanner;

public class Program {
        
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int firstNum = Integer.parseInt(scanner.nextLine());
        int secondNum = Integer.parseInt(scanner.nextLine());
        int currentNumber;
        int leftSum = 0;
        int rightSum = 0;
        for (int i = firstNum; i <= secondNum; i++) {
            currentNumber = i;
            int fifthDigit = currentNumber % 10;
            currentNumber = (currentNumber - fifthDigit) / 10;
            int fourthDigit = currentNumber % 10;
            currentNumber = (currentNumber - fourthDigit) / 10;
            int thirdDigit = currentNumber % 10;
            currentNumber = (currentNumber - thirdDigit) / 10;
            int secondDigit = currentNumber % 10;
            currentNumber = (currentNumber - secondDigit) / 10;
            int firstDigit = currentNumber % 10;
            currentNumber = (currentNumber - firstDigit) / 10;
            leftSum = firstDigit + secondDigit;
            rightSum = fifthDigit + fourthDigit;
            if (leftSum == rightSum) {
              System.out.print(i + " ");
              continue;
            }
            else if (leftSum > rightSum) {
                rightSum = rightSum + thirdDigit;
            }
            else if (rightSum > leftSum) {
                leftSum = leftSum + thirdDigit;
            }
                
            if (leftSum == rightSum) {
                System.out.print(i + " ");
            }
                
            leftSum = 0;
            rightSum = 0;
        }
            
    }
}

 

0
VasilK avatar VasilK 40 Точки

Задача 6.

Решение с loop. Горното решение няма да работи при променлива дължина на input.

import java.util.Scanner;

public class EqualSumsLeftRight {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        int f = Integer.parseInt(scanner.nextLine());
        int s = Integer.parseInt(scanner.nextLine());

        for (int i = f; i <= s; i++) {

            int leftSum = 0;
            int midSum = 0;
            int rightSum = 0;

            for (int k = 0; k <= Integer.toString(i).length() - 1; k++) {

                int num = Integer.toString(i).charAt(k) - 48;

                if (k <= 1) leftSum += num;
                else if (k >= 3) rightSum += num;
                else midSum += num;

            }


            if (leftSum == rightSum || ( Math.min(leftSum, rightSum) + midSum == Math.max(leftSum,rightSum))) {
                System.out.printf("%d ", i);
            }
        }
    }
}

 

Задача 7.

Обърни вниманиен числото 1. Бях го проспал и резултата беше 90/100.

import java.util.Scanner;

public class PrimeNumbers {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        String input = scanner.nextLine();
        int sumPrime = 0;
        int sumNonprime = 0;

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

            int num = Integer.parseInt(input);
            int count = 0;

            for (int i = 2; i <= num/2; i++) {

                if (num % i == 0) {
                    count++;
                    break;
                }

            }

            if ( num < 0 ) {
                System.out.println("Number is negative.");
            } else if ( count > 0 || num == 1) {
                sumNonprime+=num;
            } else {
                sumPrime+=num;
            }

            input = scanner.nextLine();
           /* System.out.println(count);*/

        }

        System.out.printf("Sum of all prime numbers is: %d\n", sumPrime);
        System.out.printf("Sum of all non prime numbers is: %d", sumNonprime);

    }
}

Задача 10:

Това е което писахме на упражнението.

import java.util.Scanner;

public class PartyInvitation {
    public static void main(String[] args) {

        Scanner scanner = new Scanner( System.in );

        String input = scanner.nextLine();
        int validCount = 0;
        int inValidCount = 0;
        int namesCount = 0;

 

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

            boolean valid = true;
            namesCount++;
            input = input.toLowerCase();

            for (int i = 0; i < input.length(); i++) {

                char symbol = input.charAt( i );

                if (symbol < 97 || symbol > 122) {
                    valid = false;
                }

            }

            if (valid) {
                validCount++;
                input = input.substring( 0,1 ).toUpperCase() + input.substring( 1 );
                System.out.printf( "%s\n", input );
            } else {
                inValidCount++;
                System.out.println("Invalid name!");
            }

            input = scanner.nextLine();

        }

        System.out.printf( "Valid names are %.2f%% from %d names.\n", (validCount * 1.0 / namesCount) * 100, namesCount  );
        System.out.printf( "Invalid names are %.2f%% from %d names.\n", (inValidCount* 1.0 / namesCount) * 100, namesCount  );

    }

}

 

 

0
25/10/2018 11:14:13
matrix1 avatar matrix1 1 Точки

Започнах да правя 6та от кода на 5та, защото ми се стори, че си подхождат, но май съм в грешка. Благодаря ти за помоща и съветите :)

0
matrix1 avatar matrix1 1 Точки

Благодаря на всички за помоща, която оказахте :)

0
Kbarov avatar Kbarov 1 Точки

Здравейте, искам да попитам и аз за някои задачи на който дори не мога да започна да ги пиша. Ето ги и тях :

05. Equal Sums Even Odd Position 

09. Fishing 

11. Shopping Maniac

Благодаря предварително.

0
Kbarov avatar Kbarov 1 Точки

Благодаря !

0
VasilK avatar VasilK 40 Точки

9. Fishing

Кофти е тази.

Погледни в други теми на форума има Shopping Maniac.

https://softuni.bg/forum/22829/zadachi-ot-uprajnenieto-za-vlojeni-cikli-na-java

import java.util.Scanner;

public class Fishing {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

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

        double profit = 0;
        double cost = 0;
        int count = 0;

        while (true) {


            String f = scanner.nextLine();
            if ("Stop".equals(f)) {
                if (profit > cost) {
                    System.out.printf("Lyubo's profit from %d fishes is %.2f leva.", count, profit - cost);
                } else {
                    System.out.printf("Lyubo lost %.2f leva today.", cost - profit);
                }
                return;
            }

            count++;

            String q = scanner.nextLine();
            for (int k = 0; k <= f.length() - 1; k++) {

                if (count % 3 == 0) {
                    profit += (f.charAt(k) / Double.parseDouble(q));
                } else {
                    cost += (f.charAt(k) / Double.parseDouble(q));
                }
            }

            if (count == n ) {
                break;
            }

        }

        System.out.println("Lyubo fulfilled the quota!");
        if (profit > cost) {
            System.out.printf("Lyubo's profit from %d fishes is %.2f leva.", count, profit - cost);
        } else {
            System.out.printf("Lyubo lost %.2f leva today.", cost - profit);
        }

    }

}

 

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