Loading...
Djombeto avatar Djombeto 7 Точки

HEEEELP

Излизат ми нулевите, а в Джъдж 50/100 и не мога да си намеря грешката... https://pastebin.com/7cdVytvr?fbclid=IwAR3M4dOPpA5-yeryyPu__7rdmOiV5cp16XuR85R8tPk-K1cq6aMD4549tjc

Задача 6. Висок скок
Българският лекоатлет Тихомир Иванов започва тренировки за предстоящото европейско първенство по лека атлетика на закрито в Глазгоу, Шотландия.
Вашата задача е да напишете софтуер, с който Иванов да следи своя прогрес и дали е достигнал желаните резултати. В началото програмата получава желаната височина на летвата от Тихомир, той започва тренировката си като поставя летвата на височина 30см по-ниско от целта. За всяка височина той има право на 3 скока, като за да бъде един скок успешен, той трябва да бъде над височината на летвата. При успешен скок (над летвата), височината й се вдига с 5 сантиметра. При три неуспешни скока на една и съща височина, тренировката приключва с неуспех. При достигане на желаната височина и нейното успешно прескачане, тренировката приключва с успех.
Вход
Входът е поредица от цели числа в интервала [100…300]:
На първия ред се прочита желаната от Тихомир Иванов височина в сантиметри
На всеки следващ ред до приключване на програмата се прочита височината от скока на Иванов 
Изход
На конзолата трябва да се отпечата един ред:
Ако Тихомир не успее да преодолее желаната височина:
"Tihomir failed at {височина на летвата към момента на провала}cm after {брой скокове от началото на тренировката} jumps."
Ако Тихомир успее да преодолее височината:
"Tihomir succeeded, he jumped over {височина на прескочената последно летва}cm after {брой скокове за цялата тренировка} jumps."

Примерен вход и изход
Вход    
231
205
212
213
228
229
230
235  

Обяснения
 Tihomir succeeded, he jumped over 231cm after 7 jumps.    Желана височина: 231 -> Тихомир започва от 201
Първи скок, височина на летвата 201 -> 205, успешен скок
Повдигане на летвата с 5см.
Втори скок, височина на летвата 206 -> 212, успешен скок 
Повдигане на летвата с 5см.
Трети скок, височина на летвата 211 -> 213, успешен скок

Седми скок, височина на летвата 231, желаният от Тихомир резултат, -> 235, успешен скок -> Тихомир приключва тренировката с успех.
Вход    Изход    Обяснения
250
225
224
225
228
231
235
234
235    


Обяснения
Tihomir failed at 235cm after 8 jumps.    Желана височина 250 -> Тихомир започва от 220
Първи скок, височина на летвата 220 -> 225, успешен скок
Повдигане на летвата с 5см.
Втори скок, височина на летвата 225 ->224, неуспешен скок
Трети скок и втори опит на 225 -> 225, неуспешен скок
Четвърти скок и трети опит на 225 -> 228, успешен скок
Повдигане на летвата с 5см.
Пети скок, височина на летвата 230 -> 231, успешен 
Повдигане на летвата с 5см.
Шести скок, височина на летвата 235 -> 235, неуспешен скок
Седми скок и втори опит на 235 -> 234, неуспешен скок
Осми скок и трети (последен) опит на 235 -> 235, неуспешен опит -> Тихомир приключва тренировката без успех.

Тагове:
0
Programming Basics 31/10/2019 19:30:04
hm6566 avatar hm6566 52 Точки
Best Answer

Здрасти,

Искаше ми се да запазя оригиналния код, доколкото е възможно, за да ти е по-лесно да се ориентираш, но доста се промени въпреки това. 

 

Основните неща:

=> Нямаш нужда от while-цикъла, а и освен това не е добра практика да ползваш while(true) общо взето.

=> Нямаш нужда от брояч за неуспешните опити, тях ги следиш във for-цикъла.

=> При успешен скок връщаш i = 0 защото на края на цикъла следва инкрементация и новото броене започва от 1.

=> При проверката за успех трябва да сравняваш целта с височината, на която е летвата към момента, а не с височината на скока.

=> При принтирането на информацията за неуспех трябва да принтираш височината, на която е била летвата, а не на последния скок.

 

int desiredHeight = Integer.parseInt(scanner.nextLine());
int heightMinus30cm = desiredHeight - 30;
int unsuccessfulTry = 0;
int jumps = 0;
while (true){
            for (int i = 1; i <= 3 ; i++) {
                int jump = Integer.parseInt(scanner.nextLine());
                jumps++;
                if (jump > heightMinus30cm){
                    heightMinus30cm += 5;
                    unsuccessfulTry = 0;
                    i = 1;
                    if (heightMinus30cm >= desiredHeight){
                        System.out.printf("Tihomir succeeded, he jumped over %dcm after %d jumps.", desiredHeight, jumps);
                        break;
                    }
                    heightMinus30cm += 5;
                    i = 0;
                }else {
                    unsuccessfulTry++;
                    if (i == 3){
                        System.out.printf("Tihomir failed at %dcm after %d jumps.", heightMinus30cm, jumps);
                        break;
                    }
                }
            }
        }
    }
}

 

Успех!

 

0
31/10/2019 21:19:14
Djombeto avatar Djombeto 7 Точки

Благодаря много!

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