Loading...
zazazo avatar zazazo 13 Точки

[Homework] Java Programming Basics - Simple Conditional Statements - Problem{16} - Number...100 to Text

Link към judge: 
https://judge.softuni.bg/Contests/152

---

Тъй като Java курса е отскоро и не видях друго споделено Java решение
реших да отворя нова дискусия за да сравня и оптимизирам решението си. 

Кодът изглежда работи добре, но не е никак кратък (~100 реда) и съм сигурен, че може
да се измисли по-хитър/по-оптимален начин за реализиране 
/но в допустими отстояния от наученото до момента...  ;) /.

Също имам два въпроса /Q1-2/ онтносно избраната от мен структура:

Блокове:

[1] Проверка на входни данни:
[1.1] проверка за Integer; 
[1.2] проверка за number < 0 || number > 100; 
[2] проверка за 0; 
[3] цифри 1 до 9;
[4] проверка за 100;
[5] десетици;
[6] числа 10 до 11;
[7] общо принтене с проверки;

---

Код в pastebin: 

http://pastebin.com/Qn77uJs7

---


Въпроси:

[Q1] В този контекст (а извън него?) по-оптимално ли е (performance) да проверяваме/обработваме 
подобни крайни стойности ([1.2], [2] , [4]) или изключения в началото или намирате
за по-добре да проверим за тях и да ги обработим накрая?

[Q1.1] Има ли правила за оптимизация или някакви насоки, по-които бихме могли да се водим
относно структурирането на проверките?
(да хванем изключенията първо, след което по-често изпълнени проверки да разположим
по-рано в кода или т.н.)

[Q2] бихте ли подобрили нещо в приложения код?
 

благодаря

сашо

Тагове:
0
Programming Basics 11/10/2016 15:04:56
kaloyannikov avatar kaloyannikov 531 Точки

Не знам колко неща сте учили до сега ,но не може  кой знае колко по-добре да  се направи . 

По въпрос 1 в случая не знам за какъв performance може да се говори тъй като нямаш цикли или нещо което да затормози програмата .

Иначе с масиви , които ще учите понататък може да се реши горе-долу кратко  http://pastebin.com/kR5U74DU

0
GeorgiStalev avatar GeorgiStalev 24 Точки

Интересно как думичката "fourty" е сгрешена и в judge дава грешка ако я поправя. И по форумите има такава грешка в дадените примери. Дори Intellij показва че има правописна грешка :)

0
kaloyannikov avatar kaloyannikov 531 Точки

Грешка при правене на  тестовете просто вместо forty е сложено 1 u в повече.

0
zazazo avatar zazazo 13 Точки

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

[] цифри 1 до 9;
[] числа 10 до 19;
[] десетици;

на input "99" програмата работеше повече време, с повече памет на някои от тестовете.
Усетих се (малко късно), че повечето input възможности реално са от 20 до 99,
изместих деситиците нагоре за да могат те да излязат от програмата по-рано.

Но пък това ме вкара в дилема за ранната проверката за по-малко вероятните 
стойности като 0 или 100, през които всички останали въведени числа биха преминали.
/оттам и [Q1.1]/

(... и оставих 100 доста след проверката за 0 )

Мисля, че изглежда е твърде рано обаче да се замисля човек в "Programming Basics" за тези неща. :)

ПС. Благодаря за бързия отговор и решението с масиви!

0
Plamen27 avatar Plamen27 599 Точки

Решение със switch, който сте учили на 56 реда:  http://pastebin.com/Zv0Qj8Ln

Няма как тази задача с наученото досега си остава по-дълга.

1
IvelinTodorov avatar IvelinTodorov 8 Точки

Здравей, много добра структура на решението с Switch. Ползвах го. Благодаря.

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