Loading...
t.kanchev avatar t.kanchev 25 Точки

[Homework] C# Basics - Operators and Expressions - Problem{10} - Point Inside a Circle & Outside of a Rectangle

Здравейте, 

как сте решили тази задача. При  (x*x) + (y*y)  <= (1.5*1.5)raduis  не проверява вярно тъй като окръжността е изместена {1, 1}

Тагове:
4
Programming Basics
Anonymous:
Темата нарушава т.9 от правилата на форума : https://softuni.bg/forum/questions/details/217
Plami avatar Plami 373 Точки

Ето и моето решение:

bool isInCircle = (pointX - 1) * (pointX - 1) + (pointY - 1) * (pointY - 1) <= radius * radius;

if (isInCircle && pointY > 1)
{
Console.WriteLine("Is the point inside K & outside of R? Yes");
}
else
{
Console.WriteLine("Is the point inside K & outside of R? No");

7
MANOEL avatar MANOEL 0 Точки

using System;

class BookExperience
{
    static void Main()
    {
        double x = double.Parse(Console.ReadLine());
        double y = double.Parse(Console.ReadLine());
        if ((x - 1) * (x - 1) + (y - 1) * (y - 1) <= 1.5 * 1.5)
        {
            Console.WriteLine("Inside the circle");
        }
        else
        {
            Console.WriteLine("Is outside of the circle");
        }
        if ((x >= -1 && x <= 5) && (y <= 1 && y >= -1))
        {
            Console.WriteLine("and inside the rectangle");
        }
        else 
        {
            Console.WriteLine("and outside of the rectangle");
        }
    }
}

0
TodorovH avatar TodorovH 216 Точки

Формулата в действителност е (x - h)*(x - h) + (y - k)*(y - k) = r * r , където h и k са началните координати на центъра на кръга!

10
Roberto avatar Roberto 56 Точки

Ето и моето решение,това е цялата задача.

Console.Write("x = ");
double x = double.Parse(Console.ReadLine());
Console.Write("y = ");
double y = double.Parse(Console.ReadLine());

bool isInCircle = (x - 1) * (x - 1) + (y - 1) * (y - 1) <= (1.5 * 1.5);
bool isOutsideRectangle = x > 1 || x < 6 && y > -1 || y < 2;

if (x == 0 || y == 0)
{
Console.WriteLine("no");
}
else if (isInCircle == true && isOutsideRectangle == true)
{
Console.WriteLine("yes");
}
else
{
Console.WriteLine("no");
}

Ако искаш обяснение към кода,драсни във фейсбук примерно.

2
Bojidar_At avatar Bojidar_At 6 Точки

Здравей,

 

Мисля, че грешно си въвел булевите стойности за правоъгълника. 

Х трябва да е от -1 до 5;

 а Y от -1 до 1

 

Или иначе казано:

 

bool isOutsideRectangle = x > 1 || x < 5 && y > -1 || y < 1;

0
vladeto87 avatar vladeto87 9 Точки

Най-накрая реших тази задача и аз. Ето моето предложение.

btw. стойностите на х и y от конзолата ли трябва да се четат или да присвоим стойности от таблицата в самия код?

using System;

class pointinsideacircleandoutsideofarectangle
{
static void Main()
{
double x0 = 1;
double y0 = 1;

Console.Write("Enter value for x1: ");
double x1 = double.Parse(Console.ReadLine());
Console.Write("Enter value for y1: ");
double y1 = double.Parse(Console.ReadLine());

bool insideCircle = (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0) <= 1.5 * 1.5;
bool insideRectangle = (x1 >= -1 && x1 <=5) && (y1 >= -1 && y1 <=1);

if (insideCircle == true && insideRectangle != true)
{
Console.WriteLine("yes");
}
else
{
Console.WriteLine("no");
}

}
}

 

 

 

4
TodorovH avatar TodorovH 216 Точки

Ето ви моето решение! Може да помогне на някой или някой да ми даде добър съвет за оптимизации!

http://pastebin.com/rx24U1Bh

1
georgimanov avatar georgimanov 107 Точки

Предлагам ви и моето решение тук. Може би е малко по-подробно от необходимото, но ... вие кажете

http://pastebin.com/MNGRE4VA

2
AdriyanMihaylov avatar AdriyanMihaylov 25 Точки

За да намериш дали точка от координатната система с координати ( Xт ; Yт ) се намира в кръг с координати O( X : Y ); R) където R е радиусът на окръжността, формулата е следната : R² > [ (Xт - X)² + (Yт - Y)² ] 

За да намериш дали дадена точка  от координатната система се намира в правоъгълник трябва да направиш проста проверка с подадените координати. 
Пример:
Дадена е точка с координати ( Xт: Yт ) нека вземем дадените координати на правоъгълника от задачата за домашно: R(горно=1, ляво=-1, ширина=6, височина=2) Решението на задачата се свежда до сверяване на точките по координатата X и координатата Y,а тоест:  -1 \le Xт \le  5       -1 \le Yт \le 1

Дано съм ти помогнал. 
Ето и едно мое решение,което ти дава всички възможни отговори:

using System;

 

classPointInsideCircleAndRectangle

{

    staticvoid Main()

    {

        double radious = 1.5 * 1.5;

        byte centerX = 1;

        byte centerY = 1;

        Console.Write("Please enter X and Y\n x = ");

        float coordinateX = float.Parse(Console.ReadLine());

        Console.Write(" y = ");

        float coordinateY = float.Parse(Console.ReadLine());

        float pointsCoordinates = (float)((coordinateX - centerX) * (coordinateX - centerX) + (coordinateY - centerY) *  (coordinateY - centerY));

        bool inCircle = radious - pointsCoordinates >= 0;

        bool inRectangle = coordinateX >= -1 && coordinateX <= 5 && coordinateY >= -1 && coordinateY <= 1; // check if the point are in the rectangle

        if (inCircle && inRectangle)

        {

            Console.WriteLine("\nThe point wirh coordinates ( {0} : {1} ) is in the both figures!\n", coordinateX, coordinateY);

        }

        if (inCircle && !inRectangle)

        {

            Console.WriteLine("\nThe point wirh coordinates ( {0} : {1} ) is in the circle and out of the rectangle!\n", coordinateX, coordinateY);

        }

        if (!inCircle && inRectangle)

        {

            Console.WriteLine("\nThe point wirh coordinates ( {0} : {1} ) is in the rectangle and out of the cirlce!\n", coordinateX, coordinateY);

        }

        if (!inCircle && !inRectangle)

        {

            Console.WriteLine("\nThe point wirh coordinates ( {0} : {1} ) is outside both figures!\n", coordinateX, coordinateY);

        }

    }

}

5
Diass avatar Diass 0 Точки

Вместо да влагаш толкова If-ове и хората да се бъркат, може би е по-добре да стане с Swtich / Case?

0
AdriyanMihaylov avatar AdriyanMihaylov 25 Точки

Имаш 4 If-а ...не знам какво те обърква. Не ти пречи да го направиш и със Switch / Case. 

0
MomchilDishev avatar MomchilDishev 20 Точки

Защо направо не ги вкараш в double, вместо да кастваш към float. Пестиш? :)

0
Plami avatar Plami 373 Точки

Може би не е лошо да почнем да ползваме GitHub за качване на домашните, тъй като програмите стават все по-големи и трудни за проследяване :)

1
MomchilDishev avatar MomchilDishev 20 Точки

Забелязах, че не можe да се получи отговор  на задачата от списъка за домашно.  В примерната проверка при "х = 2.5"  и  "y = 1.5" получаваме "yes", което обаче в действителност не би било в кръга. Като се има предвид, че максималното отдалечаване е (2.5/1.0) => че има грешка. Как ще коментирате?

0
zontak avatar zontak 457 Точки

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

4
RoYaL avatar RoYaL Trainer 6849 Точки

А кои решения ще се считат за верни - по кои условия? Защото аз за пръв път от вас чувам, че има промяна в домашните. Просто влязох, свалих домашното и решавах.

0
zontak avatar zontak 457 Точки

Има промяна единствено в тази задача.. :) В всяко домашно има допуснати грешки .. не се впечатлявай ;) Нямам Screen.. за да ти помогна по въпроса.. ако кажеш мога да ти дам решение на задачката.. :P

4
Eugeenek avatar Eugeenek 2 Точки

Здравейте,

Първо искам да кажа, че съм напълно начинаещ. От доста време си блъскам главата с задача 10, но не мога да се справя.

Моля някой по опитен да ми каже къде бъркам

Предварително благодаря.

Ето и моето решение Problem 10

1
iuli1478 avatar iuli1478 49 Точки

Eugeenek мисля, че чисто математически формулата е грешна в твоя случеи точката трябва да е в квадрата за да върне true израза. Моя съвет е да си направиш две булеви променливи едната за кръга и една за правоъгълника. После проверката ще е ако това за крага е true и правоъгълника false да изкарва "yes" иначе "no" нещо такова: 

 

using System;

class InOut
{
static void Main()
{
while (true)
{


Console.WriteLine("Enter x and y");
double x = double.Parse(Console.ReadLine());
Console.WriteLine("X = {0} \nPlease enter Y", x);
double y = double.Parse(Console.ReadLine());
Console.WriteLine("Y = {0}", y);
bool circle = ((((x * x) - (2 * x) + 1) + ((y * y) - (2 * y) + 1)) <= (1.5 * 1.5));
bool rectangle = ((x >= -1 && x <= 5) && (y >= -1 && y <= 1));
if (circle == true && rectangle == false)
{
Console.WriteLine("Yes!");
}
else
{
Console.WriteLine("No!");
}
}
}
}

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