Loading...
m.klimentov avatar m.klimentov 3 Точки

Проблем със задачата High Jump Java

Здраейте, при решаването на една от задачите от стари изпити се натъканх на проблем с решението.

Това е условието: https://softuni.bg/downloads/svn/programming-basics-v4/course-directories/may-2019/2019-01/Exam/06.%20High%20Jump.pdf

Реших задачате по два различни начина и на двете решения получавам 70/100 в Judge.

https://pastebin.com/embed_js/eKgNxTcr -  това е първото решение

https://pastebin.com/zQ8MciZ9 - това е второто по-опростено и по-добро

 

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

Тагове:
0
Programming Basics 23/07/2019 13:46:09
m.klimentov avatar m.klimentov 3 Точки

промених малко условието на if na 16-ти ред от второто решение и вече е 80/100, но пак не успявам

 

така изглежда новият if:

if (currentAtempt > goalBarHigth && (currentBarHeigth + 5) >= goalBarHigth){

това е за да не приключва програмата ако успее да скочи повече от заложеното още докато летвата е ниско

0
23/07/2019 13:35:00
m.klimentov avatar m.klimentov 3 Точки

Хайде де хора, няма ли кой да помогне?

0
mark79 avatar mark79 639 Точки

Здравей,

ако искаш погледни моето решение.

Поздрави :)

0
RuNNeR4142 avatar RuNNeR4142 396 Точки

if (currentAttempt > goalBarHeight && (currentBarHeight + 5) >= goalBarHeight){ 

0
m.klimentov avatar m.klimentov 3 Точки

Здравей,

без това условие

&& (currentBarHeight + 5) >= goalBarHeight){ 

програмата минава с 70/100 с него е 80/100. 

 

След което реших да подходя и по 3-ти начин с два вложени цикъла и така програмата минава 100/100, но не разбирам защо това решенние не минава и ми се иска някой да ми обясни.

0
RuNNeR4142 avatar RuNNeR4142 396 Точки

Не минава защото вместо да сравняваш дали текущата височина е равна или по-голяма от целта, ти добавяш 5 към височината което няма логика и е ненужно.
 По този начин условието излиза вярно преди текущата височина да достигне целта и задачата приключва по-рано отколкото трябва. Затова подчертах да махнеш +5 и всичко работи на 100.

0
m.klimentov avatar m.klimentov 3 Точки

Разбирам. 

Много благодаря за помощта. :)

1
RuNNeR4142 avatar RuNNeR4142 396 Точки

Бонус примерно решение:
 

public class E06HighJump {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int goal = Integer.parseInt(scanner.nextLine());
        int tries = 0;
        int jumpsTotal = 0;

        for (int i = goal - 30; i <= goal;) {
            int jump = Integer.parseInt(scanner.nextLine());
            jumpsTotal++;

            if (jump > i) {
                i +=5;
                tries = 0;
            } else {
                tries++;
            }
            if (tries == 3) {
                System.out.printf("Tihomir failed at %dcm after %d jumps.", i, jumpsTotal);
                return;
            }
        }
        System.out.printf("Tihomir succeeded, he jumped over %dcm after %d jumps.", goal, jumpsTotal);
    }
}
0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.