Loading...
joto_to avatar joto_to 40 Точки

Решение на Домашно 04 от Основи на програмирането с Java - декември 2016

По-сложни логически проверки

Дата: 21-ви януари 2017

 

Задача 01 ( Обръщение според възраст и пол )

За тази задача опитвах някакви варианти с char вместо String, но се отказах.

Задача 02 ( Квартално магазинче )

Ако желаете вместо вложен if може да се ползва switch, но целта на задачата беше да упражним вложени if конструкции, за това съм я направил така.

Задача 03 ( Точка в правоъгълник )

Използвах модифицирана версия на сорса от тази задача за 13-та задача. Няма нужда да "откриваме" велосипеда след като сме го направили 10 задачи по-рано ;-)

Задача 04 ( Плод или зеленчук? )

Използвах switch защото кодът е много по-чист и лесно четим.

Задача 05 ( Невалидно число )

Единственото "по-сложно" в тази задача е смесената проверска с || (логическо ИЛИ) и &&(логическо И), и отрицанието с ! (взимаме обратното на булевата променлива/израз в if).

Задача 06 ( Точка върху страната на правоъгълник )

Тук проверяваме дали точката е на някоя от линиите(граници) чрез сравняване на булевите резултати с || (логическо ИЛИ). Отново използвам модифициран код за 13-та задача.

Задача 07 ( Магазин за плодове )

Същата логика като в 4-та задача. Само добаваме цените на продуктите.

Задача 08 ( Търговски комисионни )

Като 7-ма задача, но с if проверка за интервал от чила, за да изчислим комисионната според интервала.

Задача 09 ( Ден на седмицата )

По скоро като 4-та задача. Може би тук се е очаквало да използваме swith за първи път в домашното.

Задача 10 ( Тип на животно )

Едно към едно с 4-та задача.

Задача 11 ( Кино )

Като 7-ма задача.

Задача 12 ( Волейбол )

Интересна задача. Обърнете внимание на това, че е задължително в изразите от тип double да използвате поне едно double число (каквото и да е число с десетична запетая).

Задача 13 ( * Точка във фигурата )

Много забавна задача. Изтормозих се, но не колкото с трабите в басейна. Тук използвам много булеви променливи, които надявам се говорят сами за себе си. Сорса на 3-та и 6-та задача ги използвам като функции, а използвам функции за да е по-лесно четима main() функцията/методът. Сложната фигува мислено и проиграмно я разделям на две прости фигури. Използвам два идентични по идея, но различни по съдържание, целочислени масива. В масивите записвам координатите на двете фигури (x1,y1 и x2,y2) и координатите на точката (x,y) която проверяваме. Координатите на търсената точка реално ги има и в двата масива, но това е с цел да опростя използването на функциите с които определяме къде е точката спрямо двете прости фигури. Тъй като двете прости фигури са долепени и имат обща стена, изключваме тази стена от проверката за "точка на границата". правим това чрез отрицание на булевата променлива с ! (логическо отрицание, или иначе казано взимаме обратната стойност на булевата променлива/израз).

Задача 14 ( Навреме за изпит )

Използваме същите похвати като в 7-ма и 14-та задаза от миналата лекция.

Задача 15 ( Пътешествие )

Тази задача май трябва да я напиша на ново за да си личи по-добре за какво става дума. Иначе си пработи :) Поради някаква причина съм решил да разделя изходният резултат на 3 стринга, което съвзем не е нужно или наложително. Трябва да се обърне внимание, че в заданието се иска резултатът да е на два реда.

2
Programming Basics
MartinBG avatar MartinBG 4803 Точки

Задача 13 има много възможни решения и аз лично се забавлявах докато я решавах.

Ще споделя едно от решенията ми: http://pastebin.com/5uHY2yrp

Използвам два прости метода, с които проверявам дали точката е извън фигурата или е вътре.

Използването на методи конкретно в тази задача не е наложително, тъй като се извикват само по веднъж, но разбиването на кода на по-малки специализирани блокове прави програмата по-четима и улеснява дебъгването (намирането на грешки).

0
30/01/2017 17:29:47
joto_to avatar joto_to 40 Точки

Много добро решение на проблема с общата стена на двете полуфигури. Браво!

private static boolean isInside(int h, int x, int y){
        return (((y < h) && (y > 0) && (x > 0) && (x < 3*h)) ||
                ((y >= h) && (y < 4*h) && (x > h) && (x < 2*h)));
    }

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