Проверьте правильность кода (принадлежность точки заштрихованной области) - C#
Формулировка задачи:
Дана точка на плоскости с координатами (х, у). Составить программу, которая выдает одно из сообщений "Точка с координатами (х, у) лежит внутри заштрихованной области", "Точка с координатами (х, у) лежит вне заштрихованной области", "Точка с координатами (х, у) лежит на границе":
Начало y=4 конец y=6
Вот мой код:
Console.WriteLine("Плоскость окружности");
double x, y;
Console.WriteLine("Введите абциссу");
Console.Write("x= ");// Вводим х
x = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Введите ординату");
Console.Write("y= ");//Вводим у
y = Convert.ToDouble(Console.ReadLine());
if (y >= 2 && x * x + y * y > 16 && x * x + y * y < 36) // точка внутри заштрихованой области
Console.WriteLine("Точка с координатами ({0}, {1}) лежит внутри заштрихованной области", x, y);
else if (x * x + y * y == 16 || x * x + y * y == 36) // точка на границе заштрихованой области
Console.WriteLine("Точка с координатами ({0}, {1}) лежит на границе", x, y);
else Console.WriteLine("Точка с координатами ({0}, {1}) лежит вне заштрихованной области", x, y);//иначе точка лежит вне заштрихованой области
Console.ReadKey();Решение задачи: «Проверьте правильность кода (принадлежность точки заштрихованной области)»
textual
Листинг программы
using System;
namespace Console1
{
class Program
{
static int PositionPoint(decimal x, decimal y)
{
// -1 вне области, 0 - на границе, 1 - внутри.
decimal rr = x * x + y * y; // Для облегчения глазам.
return (y < 2 || rr < 16 || rr > 36) ? -1 : (y == 2 || rr == 16 || rr == 36) ? 0 : 1;
}
static string StatusPoint(int position)
{
string res;
if (position < 0)
res = "Вне.";
else if (position > 0)
res = "Внутри.";
else
res = "На границе.";
return res;
}
static void Main()
{
//double lim = 6.0, delta = 0.2;
decimal dcLim = 6.0m;
decimal delta = 0.2m;
Console.WriteLine("Проверка попадания/не попадания точки в область.");
Console.WriteLine("x\ty\tresult\n----------------------------");
for (decimal x = -delta; x <= delta; x += delta)
{
for (decimal y = 0.0m; y <= dcLim + delta; y += delta)
Console.WriteLine("{0:F2}\t{1:F2}\t{2}", x, y, StatusPoint(PositionPoint(x, y)));
Console.WriteLine();
}
}
}
}