Everest - JavaScript
Решение ?
Изпит по "Основи на програмирането"
Задача 5. Еверест
Атанас е алпинист, чиято следваща цел е изкачването на Еверест. Вашата задача е да напишете програма която да следи до каква височина е достигнал Атанас и за колко дни е изкачил върха. Той започва изкачването си от ден първи от базов лагер, който е на 5 364 метра, а самият връх е на 8 848м. Преди всяко изкачване на определени метри, Атанас може да си почине в някой лагер и да продължи на следващия ден или да продължи изкачването без да спре, като максималното време, в което той може да изкачва върха е 5 дни. Програмата приключва при получаване на командата "END", при достигане на върха(8 848м) или при превишаване на разрешените 5 дни за изкачване.
Вход
От конзолата се четат по два реда до въвеждане на команда "END", ако са минали повече от 5 дни в изкачване или се достигне върха (8 848м):
- "Yes" / "No" - текст - дали Атанас ще нощува преди изкачването на следващите метри или не
- Изкачени метри - цяло число в интервала [1...4000]
Изход
След получаване на командата "END", превишаване на разрешениете 5 дни за изкачване или се достигне върха (8 848м), на конзолата се отпечатва:
- Ако Атанас е изкачил Еверест:
"Goal reached for {брой дни които Атанас е изкачвал върха} days!"
- Ако Атанас НЕ е изкачил Еверест:
- Failed!"
- достигнатите от Атанас метри}"
Примерен вход и изход
Вход |
Изход |
Обяснения |
|||
Yes 1254 Yes 1402 No 250 Yes 635 |
Goal reached for 4 days! |
Дали преди изкачването Атанас нощува: Yes -> започва ден 2-ри Изкачени метри през ден 2-ри: 5 364 + 1 254 = 6 618 м Дали преди изкачването Атанас нощува: Yes -> започва ден 3-ти Изкачени метри през ден 3-ти: 6 618 + 1 402 = 8 020 м Дали преди изкачването Атанас нощува: No -> продължава ден 3-ти Изкачени метри през ден 3-ти: 8 020 + 250 = 8 270 м Дали преди изкачването Атанас нощува: Yes -> започва ден 4-ти Изкачени метри през ден 4-ти: 8 270 + 635 = 8 905 м Изкачените метри 8 905 м са повече от 8 848м, следователно Атанас е изкачил Еверест за 4 дни и програмата приключва. |
|||
Вход |
Изход |
Вход |
Изход |
Вход |
Изход |
Yes 1000 Yes 945 No 1200 END |
Failed! 8509 |
Yes 535 Yes 849 Yes 499 Yes 400 Yes 500 |
Failed! 7647 7647 7647 7647 76764747 |
Yes 700 END |
Failed! 6064 |
JavaScript - Примерен вход и изход
Вход |
Изход |
Обяснения |
|||
(["Yes", "1254", "Yes", "1402", "No", "250", "Yes", "635"]) |
Goal reached for 4 days! |
Дали преди изкачването Атанас нощува: Yes -> започва ден 2-ри Изкачени метри през ден 2-ри: 5 364 + 1 254 = 6 618 м Дали преди изкачването Атанас нощува: Yes -> започва ден 3-ти Изкачени метри през ден 3-ти: 6 618 + 1 402 = 8 020 м Дали преди изкачването Атанас нощува: No -> продължава ден 3-ти Изкачени метри през ден 3-ти: 8 020 + 250 = 8 270 м Дали преди изкачването Атанас нощува: Yes -> започва ден 4-ти Изкачени метри през ден 4-ти: 8 270 + 635 = 8 905 м Изкачените метри 8 905 м са повече от 8 848м, следователно Атанас е изкачил Еверест за 4 дни и програмата приключва. |
|||
Вход |
Изход |
Вход |
Изход |
Вход |
Изход |
(["Yes", "1000", "Yes", "945", "No", "1200", "END"]) |
Failed! 8509 |
(["Yes", "535", "Yes", "849", "Yes", "499", "Yes", "400", "Yes", "500"]) |
Failed! 7647 7647 7647 7647 76764747 |
(["Yes", "700", "END"]) |
Failed! 6064 |