Loading...
Axiomatik avatar Axiomatik 2248 Точки

https://softuni.bg/downloads/svn/programming-basics-v4/course-directories/may-2019/2019-03/Exam/Solutions/Author's-Solutions.zip

0
m_power1001 avatar m_power1001 2 Точки

Благодаря! Но не ми е ясно защо победителят пак се чете преди последния if?

0
Axiomatik avatar Axiomatik 2248 Точки

Вход

Първоначално се четат два реда:

  1. Брой яйца, които има първият играч - цяло число в интервала [1 99]

  2. Брой яйца, които има вторият играч - цяло число в интервала [1 99]

След това до получаване на команда "End of battle" се четe многократно един ред:

  1. Победител - текст - "one" или "two"

0
m_power1001 avatar m_power1001 2 Точки
https://pastebin.pl/view/7a84996d Можете ли да кажете къде греша? Защото не Ви разбирам.
0
Axiomatik avatar Axiomatik 2248 Точки
import java.util.Scanner;
 
public class EasterEggsBattle {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int playerFirst = Integer.parseInt(scanner.nextLine());
        int playerSecond = Integer.parseInt(scanner.nextLine());
        String winner = scanner.nextLine();
 
        while (!(winner.equals("End of battle"))) {
            if (winner.equals("one")) {
                playerSecond = playerSecond - 1;
                if (playerSecond == 0) {
                    System.out.printf("Player two is out of eggs. Player one has %d eggs left.", playerFirst);
                    break;
                }
            } else if (winner.equals("two")) {
                playerFirst = playerFirst - 1;
                if (playerFirst == 0) {
                    System.out.printf("Player one is out of eggs. Player one(two !!!) has %d eggs left.", playerSecond); // ERROR Player two
                    break;
                }
            }

            winner = scanner.nextLine();
        }

        if (winner.equals("End of battle")) {
            // ERROR, print on new lines
            System.out.printf("Player one has %d eggs left.", playerFirst);
            System.out.printf("Player two has %d eggs left.", playerSecond);
        }
    }
}

 

0
m_power1001 avatar m_power1001 2 Точки

Тук не определяме ли дали победителят е първият или вторият?

if (winner.equals("one")) 
} else if (winner.equals("two")) 

Защо пак трябва да се чете това?

winner = scanner.nextLine();

0
Axiomatik avatar Axiomatik 2248 Точки
  • При получаване на команда "one" -> първият играч печели => яйцата на втория намаляват с едно

  • При получаване на команда "two" -> вторият играч печели => яйцата на първия намаляват с едно

 

 

winner = scanner.nextLine(); 

=> Първоначално се четат два реда. След това до получаване на команда "End of battle" се четe многократно един ред (Победител - текст - "one" или "two")

 

 

0
03/02/2021 15:09:05
m_power1001 avatar m_power1001 2 Точки

Благодаря! Може ли да помогнете?

https://pastebin.ubuntu.com/p/7Fm8N75mXk/

0
04/02/2021 14:29:42
Axiomatik avatar Axiomatik 2248 Точки
import java.util.Scanner;

public class SuitcasesLoad {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double capacity = Double.parseDouble(scanner.nextLine());
        String text = scanner.nextLine();
        int count = 0;

        while (!(text.equals("End"))){
            double value = Double.parseDouble(text);
            count++;

            if (count % 3 == 0 ) {
                value = value + value * 0.10;
            }

            if (value > capacity) {
                count--;
                System.out.println("No more space!");
                System.out.printf("Statistic: %d suitcases loaded.", count);
                break;
            }
            
            capacity -= value;

            text = scanner.nextLine();
        }

        if (text.equals("End")) {
            System.out.println("Congratulations! All suitcases are loaded!");
            System.out.printf("Statistic: %d suitcases loaded.", count);
        }
    }
}

 

0
m_power1001 avatar m_power1001 2 Точки

Много Ви благодаря! Имам още един въпрос, но не ми дава да го задам отделно, затова го качвам тук.

https://pastebin.pl/view/58b053b2

Защо тук не въвеждаме, че трябва да прочетем всяко едно число? currentNumber = Integer.parseInt(scanner.nextLine());  -  в края на while цикъла. Имаме първо 10, откъде знаем, че после имам 20 и пр.?

 

0
Axiomatik avatar Axiomatik 2248 Точки

"Напишете програма, която чете цяло число от конзолата и на всеки следващ ред цели числа, докато тяхната сума стане по-голяма или равна на първоначалното число."

входните данни са cамо примери, може да cа 1000, 10101, 222, 3213 ...

0
m_power1001 avatar m_power1001 2 Точки

Благодаря! На тази задача можете ли да ми пратите pastebin? Понеже ме затруднява.

JAVA//While-Loop - More Exercises//03. Stream Of Letters

0
Axiomatik avatar Axiomatik 2248 Точки

"Search" Button next to Live button.

Type in "stream of letters"

 

Result from other collegues:

https://pastebin.com/ecZJ0CPz

https://pastebin.com/icaDjgXi

 

MartinBG:

import java.util.Scanner;

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

        boolean oHasOccurred = false;
        boolean cHasOccurred = false;
        boolean nHasOccurred = false;

        String word = "";

        String input;
        while (!"End".equals(input = scanner.nextLine())) {
            char letter = input.charAt(0);
            boolean appendLetter = false;
            if ((letter >= 'a' && letter <= 'z') || (letter >= 'A' && letter <= 'Z')) {
                switch (letter) {
                case 'o':
                    appendLetter = oHasOccurred;
                    oHasOccurred = true;
                    break;
                case 'n':
                    appendLetter = nHasOccurred;
                    nHasOccurred = true;
                    break;
                case 'c':
                    appendLetter = cHasOccurred;
                    cHasOccurred = true;
                    break;
                default:
                    appendLetter = true;
                }
            }

            if (appendLetter) {
                word += letter;
            }

            if (oHasOccurred && nHasOccurred && cHasOccurred) {
                System.out.print(word + ' ');
                word = "";
                oHasOccurred = false;
                cHasOccurred = false;
                nHasOccurred = false;
            }
        }
    }
}

 

0
m_power1001 avatar m_power1001 2 Точки

Какво показва това в задачата ?

    boolean appendLetter = false;

  И сътветно нещата, свързани с него. Например това.

case 'o':

                    appendLetter = oHasOccurred;

                    oHasOccurred = true;

                    break;

 

0
07/02/2021 17:15:44
Axiomatik avatar Axiomatik 2248 Точки

 

    boolean appendLetter = false;

 

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

 

case 'o':

                    appendLetter = oHasOccurred;

                    oHasOccurred = true;

                    break;

При всяко следващо нейно срещане се записва нормално в думата. След като са налични и трите символа от командата, се печата думата и интервал

 

0
tonytanchev avatar tonytanchev 0 Точки

победителят се чете преди последната проверка за да не изпаднеш е безкраен цикъл, а последната проверка е когато цикъла е приключил тоест едното от условията е изпълнено  цикъла е приключил 

0
m_power1001 avatar m_power1001 2 Точки

@axiomatik  Здравейте! Можете ли да помогнете с тази задача?

01. Unique PIN Codes//

Nested Loops - More Exercises

0
14/02/2021 16:31:10
Axiomatik avatar Axiomatik 2248 Точки

2. Letters combination, many comments/provided in the forum:

MartinBG:

Както е отбелязал и колегата fbinnzhivko, основният проблем с Java решението на тази задача е в подготовката и отпечатването на резултатите. Решението със StringBuilder е логичен избор, когато ни се налага да съединяваме множество символи/стрингове, а освен това позволява отпечатването на резултата да се направи наведнъж.

Конкретно за тази задача има и друго възможно решение - използване на char[4], тъй като знаем, че всеки валиден резултат ще има 3 букви + " ". 

В горните решения ще забележиш и една допълнителна оптимизация - преди всеки вложен цикъл има валидация на текущия символ и ако той не е валиден не се изпълняват циклите от по-долни нива. Това помага да се намали общият брой на изпълнените итерации по време на изпълнение на програмата.

 

fbinnzhivko:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class mainche {
    public static void main(String[] args) throws IOException {
 
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder("");
 
        char start = reader.readLine().charAt(0);
        char end = reader.readLine().charAt(0);
        char skip = reader.readLine().charAt(0);
        int count = 0;
 
        for (char first = start; first <= end; first++) {
            for (char second = start; second <= end; second++) {
                for (char third = start; third <= end; third++) {
                    if (first != skip && second != skip && third != skip) {
                        sb.append(first).append(second).append(third).append(" ");
                        count++;
                    }
                }
            }
        }
        System.out.print(sb.toString());
        System.out.printf("%d", count);
    }
}

 

1. Unique Pin Codes

Easier than Letters Combination, using 3 for-loops as in Letters combination.

  • Първата и третата цифра трябва да бъдат четни.

  • Втората цифра трябва да бъде просто число в диапазона [2...7].

 

Вход : 3 5 5

Във всички трицифрени PIN кодове, които сме получили първата цифра ни е 2, защото това е единственото възможно четно число.

При втората цифра важи друго правило. Там трябва да подберем всички възможни прости числа в диапазона от 2 до 7. В нашия случай тези числа са както следва 2, 2, 3, 3, 5, 5.

При третата цифра важи правилото за четните числа и ако го спазваме, получаваме, че възможните числа са: 2, 4, 2, 4, 2, 4.

 

 

0
m_power1001 avatar m_power1001 2 Точки
char start = reader.readLine().charAt(0);

        char end = reader.readLine().charAt(0);

        char skip = reader.readLine().charAt(0);

А защо тук в скобичките имаме 0?

0
Axiomatik avatar Axiomatik 2248 Точки

https://www.javatpoint.com/java-string-charat

The java string charAt() method returns a char value at the given index number.

The index number starts from 0 and goes to n-1, where n is length of the string. It returns StringIndexOutOfBoundsException if given index number is greater than or equal to this string length or a negative number.

 

public class CharAtExample{  
public static void main(String args[]){  
String name="javatpoint";  
char ch=name.charAt(4);//returns the char value at the 4th index  
System.out.println(ch);  
}}  


Output:

t

 

Входът се чете от конзолата и съдържа точно 3 реда:

  1. Малка буква от английската азбука за начало на интервала – от ‘a’ до ‚z’.

  2. Малка буква от английската азбука за край на интервала – от първата буква до ‚z’.

  3. Малка буква от английската азбука – от ‘a’ до ‚z’ – като комбинациите съдържащи тази буквата се пропускат.

Вход: 

a => char start = reader.readLine().charAt(0); 

c =>   char end = reader.readLine().charAt(0);

b => char skip = reader.readLine().charAt(0);

0
m_power1001 avatar m_power1001 2 Точки

Например ако имаме Hello, на H отговаря 0? В моя случай имам само B, и то се явява 0 ли? Затова в скобите пиша 0?

1
Axiomatik avatar Axiomatik 2248 Точки

Correct, index starts at 0 position and continues to length-1

 

Hello:

length => 5 (1, 2, 3, 4, 5)

index => (length - 1) 0, 1, 2, 3, 4

Hello(0) => H

Hello(4) => o

0
m_power1001 avatar m_power1001 2 Точки

Благодаря! А можете ли да помогнете с тази задача?

07. Safe Passwords Generator//Java//

Nested Loops - More Exercises

Понеже я решавам, но когато x и у достигнат а и б, цикълът продължава и не знам как да го спра.

0
m_power1001 avatar m_power1001 2 Точки

@ Axiomatik

Благодаря! А можете ли да помогнете с тази задача?

07. Safe Passwords Generator//Java//

Nested Loops - More Exercises

Понеже я решавам, но когато x и у достигнат а и б, цикълът продължава и не знам как да го спра.

 

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