Loading...
ZvetanIG avatar ZvetanIG 907 Точки

[HW] Operators, Expressions and Statements - Problem 10

Здравейте,

някой забелязал ли е, че  в примерите този ред нещо не е наред

 x = 1.5
y = 2.5

inside K & outside of R    → yes

     
     

Според мен тази точка е извън кръга и отговора трябва да е no.

Според вас, какво е?  Грешка или уловка в задачата?

Тагове:
15
Programming Basics
nakov avatar nakov SoftUni Team Trainer 5295 Точки
Best Answer

Благодарим ви, че намерихте и докладвахте грешката. Оправихме я. Ето коректното условие на задачата:

11
rosenrusev avatar rosenrusev 175 Точки

Здравей, 

В задачата се цели да се проверят координатите по x и y дали са в окръжността и извън правоъгълника.

Според мен са верни. За намиране на точките в кръга използвай формулата x² + y² < r² (където r е радиуса). Преработи тази формула за координатите и извън кръга.

Скоро ще постна и моето решение :)

1
Aleksiev avatar Aleksiev 133 Точки

Малка корекция. В задачата се иска да се проверят координатите на Х и Y дали са в окръжността и извън правоъгълника.

4
rosenrusev avatar rosenrusev 175 Точки

Здравей,

Прав си. Отлично. Това е грешка. Сега реших задачата и на координати x = 2.5 и y = 1.5 резултата е NO.

След малко ще пусна и кода в темата ти.

 

Добавям тука коментара си, за да не пускам нов :)

Използвам посочената формула, разбита по следния начин:

(x-1)*(x-1)+(y-1)*(y-1) < 2.25 , с радиус на окръжността 1.5 повдигнат на квадрат.

От тук получаваме  (x² + 1)+(y²+1) < 2.25. Това е за окръжността.

За правоъгълника вземам следните координати за проверка:

((x < =5) || ((x >= -1) && ((y <= -1) || (y >= 1)) . Връщам булев резултат за истина или не истина.

Ето и кода: http://pastebin.com/FL7iP0Nn .

1
ZvetanIG avatar ZvetanIG 907 Точки

 

 

 

 

(x < -1) || ((x >= -1) = true   // този израз винаги ще ти е true

 (y <= -1) || (y >= 1)  това връща  true, когато y е извън правоъгълника. Това може и да ти е ОК, зависи от логиката на програмата

1
rosenrusev avatar rosenrusev 175 Точки

Благодаря за корекцията, ще пооптимизирам сега.

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

0
ZvetanIG avatar ZvetanIG 907 Точки

       

Това е моя вариант на задачката:

 

 

        Console.Write("X = ");
        double x = double.Parse(Console.ReadLine());
        Console.Write("Y = ");
        double y = double.Parse(Console.ReadLine());
        double r = 1.5;
        bool isInCircle = r * r >= (x - 1) * (x - 1) + (y - 1) * (y - 1);
        bool isInRectangle = (x >= -1) && (x <= 5) && (y >= -1) && (y <= 1);
        Console.WriteLine(isInCircle && !isInRectangle ? "yes" : "no");

2
ananievnikola avatar ananievnikola 9 Точки

Не може ли принципно вместо bool isInRectangle = (x >= -1) && (x <= 5) && (y >= -1) && (y <= 1); да кажем просто

bool isInRectangle = (y >= -1); ? Тестовете от уърдовския файл ги минава всички така :)

 

едит: ето го и моето решение:

static void Main()
{
double centerX = 1;
double centerY = 1;
double radius = 1.5;

Console.WriteLine("Input coordinate for x: ");
double x = double.Parse(Console.ReadLine());
Console.WriteLine("Input coordinate for y: ");
double y = double.Parse(Console.ReadLine());

if ((Math.Pow(x - centerX, 2) + (Math.Pow(y - centerY, 2)) <= Math.Pow(radius, 2)))
{

if (y >= 1)
{
Console.WriteLine("Yes! The point is in the circle and outside the rectangle");
}
else
{
Console.WriteLine("No! The point isn't both inside the circle and outside the rectangle");
}
}
else
{
Console.WriteLine("No! The point isn't both inside the circle and outside the rectangle");
}
}

 

0
ZvetanIG avatar ZvetanIG 907 Точки

bool isInRectangle = (y >= -1);

Това няма да работи, защото правоъгълника има  някакви граници - долна граница и горна граница. Подходите са два:  проверка дали си в границите или проверка дали си извън границите.  Но и в двата случая трябва да провериш къде е точката прямо всички граници.

Например горния случай не би трябвало да работи при y = 2, защото у на правоъгълника е от  -1 до 1.

В случая долния израз проверява дали точката е в правоъгълника:

bool isInRectangle = (x >= -1) && (x <= 5) && (y >= -1) && (y <= 1)

Това, че програмката ти покрива всички примери от  задачата, не означава че е вярна. Опитай се да е тестваш с твои примери, за които например знаеш отговора.

 

0
Aleksiev avatar Aleksiev 133 Точки

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

homework03-error

По примера от таблицата зелената точка точката трябва да се намира там където съм я нарисувал със стрелкичката,
а по примера от схемата, координатите на зелената точка в таблицата трябва да са Х = 2, Y = 1.5

5
rosenrusev avatar rosenrusev 175 Точки

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

Благодаря на колегата, че зададе въпроса в темата и на теб за това, че си обърнал внимание на написаното от мен :)

 

4
n_stefanov avatar n_stefanov 34 Точки

Прав си, грешен е примера.

 

Ето и моето решение, подобно на колегите:

http://pastebin.com/Uc4E1hhJ

 

Поздрави!

1
garbuchev avatar garbuchev 18 Точки

Да, за по-лесно можем да си преместим всичко с (-1) по Х и (-1) по У. Така кръга ще дойде в (0,0).

1
ZloboMiR avatar ZloboMiR 50 Точки

Още една малка добавка. Най-сигурно е такива фигури да се дефинират с координатите на всичките им точки, въпреки повечето писане. Според чертежа точките на върховете на четириъгълника "точка(x, y)" са: А (-1, 1); В (5, 1); С (5, -1); D (-1, -1). А според условието на задачата С трябва да има кординати (5, 3), D трябва да има кординати (-1, 3). За да отговаря на чертежа, height = -2.

0
Masovski avatar Masovski 211 Точки

И да, и не. След като са указани координатите на две от страните, няма как C да има координати (5, 3) и да остане правоъгълник. Имаме top и left страните с точни координати, тоест те стоят там винаги, защото така е по условие. 

Друг в въпроса, за височината. Според този линк, височината е вертикалния размер между две точки. За да е "отрицателна" една височина, то трябва да е под нулата, което в случая се явява долната страна. Следователно, щом височината е 2, то долната страна ще е на разстояние по вертикалната ос => горната страна - височината, което в случая е +1 - (+2).

 

 

0
ZloboMiR avatar ZloboMiR 50 Точки

Да, бях почнал да пиша дори послепис, че ключовите думи "top" и "left" подсказват, че равнината, в която лежи фигурата, е надолу и надясно. Но именно както за х2 = x1 + 6 = 5, така за y2 = y1 + 2 = 3. В същия линк е казано, че "височина" има две значения, второто означава под или над дадено равнище (в нашия случай под и над абсцисата). Например депресиите могат да имат отрицателна височина (също и кладенците, варниците, септичните ями). Може би наистина издребнявам излишно. :)

0
Masovski avatar Masovski 211 Точки

Да де, аз за това второто значение имах предвид. Само че в случая y1 = -1.

A y = 1 - за центъра на окръжността, но никъде не е упоменато, че координатите на кръга по някакъв начин влияят или имат зависимост към правоъгълника. 

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