[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}
Здравейте,
как сте решили тази задача. При (x*x) + (y*y) <= (1.5*1.5)raduis не проверява вярно тъй като окръжността е изместена {1, 1}
Ето и моето решение:
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");
Формулата в действителност е (x - h)*(x - h) + (y - k)*(y - k) = r * r , където h и k са началните координати на центъра на кръга!
Ето и моето решение,това е цялата задача.
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");
}
Ако искаш обяснение към кода,драсни във фейсбук примерно.
Здравей,
Мисля, че грешно си въвел булевите стойности за правоъгълника.
Х трябва да е от -1 до 5;
а Y от -1 до 1
Или иначе казано:
bool isOutsideRectangle = x > 1 || x < 5 && y > -1 || y < 1;
Най-накрая реших тази задача и аз. Ето моето предложение.
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");
}
}
}
Ето ви моето решение! Може да помогне на някой или някой да ми даде добър съвет за оптимизации!
Предлагам ви и моето решение тук. Може би е малко по-подробно от необходимото, но ... вие кажете
http://pastebin.com/MNGRE4VA
За да намериш дали точка от координатната система с координати ( Xт ; Yт ) се намира в кръг с координати O( X : Y ); R) където R е радиусът на окръжността, формулата е следната : R² > [ (Xт - X)² + (Yт - Y)² ]
За да намериш дали дадена точка от координатната система се намира в правоъгълник трябва да направиш проста проверка с подадените координати.
Пример:
Дадена е точка с координати ( Xт: Yт ) нека вземем дадените координати на правоъгълника от задачата за домашно: R(горно=1, ляво=-1, ширина=6, височина=2) Решението на задачата се свежда до сверяване на точките по координатата X и координатата Y,а тоест: -1 Xт 5 -1 Yт 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);
}
}
}
Вместо да влагаш толкова If-ове и хората да се бъркат, може би е по-добре да стане с Swtich / Case?
Имаш 4 If-а ...не знам какво те обърква. Не ти пречи да го направиш и със Switch / Case.
Защо направо не ги вкараш в double, вместо да кастваш към float. Пестиш? :)
Може би не е лошо да почнем да ползваме GitHub за качване на домашните, тъй като програмите стават все по-големи и трудни за проследяване :)
Забелязах, че не можe да се получи отговор на задачата от списъка за домашно. В примерната проверка при "х = 2.5" и "y = 1.5" получаваме "yes", което обаче в действителност не би било в кръга. Като се има предвид, че максималното отдалечаване е (2.5/1.0) => че има грешка. Как ще коментирате?
не мога да гледам пак домашното.. но мисля,че не си забелязал промяната която направиха за да поправят грешката си .. Наков някъде беше дал коректното условие..но тъй като направиха адски много безсмислени теми много от потребителите.. ще трябва да си играеш цяла нощ да търсиш :)
А кои решения ще се считат за верни - по кои условия? Защото аз за пръв път от вас чувам, че има промяна в домашните. Просто влязох, свалих домашното и решавах.
Има промяна единствено в тази задача.. :) В всяко домашно има допуснати грешки .. не се впечатлявай ;) Нямам Screen.. за да ти помогна по въпроса.. ако кажеш мога да ти дам решение на задачката.. :P
Здравейте,
Първо искам да кажа, че съм напълно начинаещ. От доста време си блъскам главата с задача 10, но не мога да се справя.
Моля някой по опитен да ми каже къде бъркам
Предварително благодаря.
Ето и моето решение Problem 10
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!");
}
}
}
}
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");
}
}
}