Как определить принадлежность точки октанту? - C#
Формулировка задачи:
Стоит задача - написать программу для определения принадлежности точки октанту. Октант - это четверть в трехмерном пространстве. Все довольно просто если бы не нужно было написать программу которая будет это делать с помощью всего трех атомарных условий(Условие над которым невозможно произвести дальнейшуюю декомпозицию. Тоесть условие которое больше нельзя разложить. Без логических операторов. ).
Максимум получилось сделать с помощью семи.
if (x>0)
if (y>0)
if (z>0)
k = 1;
else
k = 8;
else if (z>0)
k = 4;
else
k = 5;
else if (y>0)
if (z>0)
k = 2;
else
k = 7;
else if (z>0)
k = 3;
else
k = 6;Решение задачи: «Как определить принадлежность точки октанту?»
textual
Листинг программы
static int GetOctant(int x, int y, int z)
{
var dict = new Dictionary<string, int>()
{
{"+++", 1 },
{"+-+", 2 },
{"+--", 3 },
{"++-", 4 },
{"-++", 5 },
{"--+", 6 },
{"---", 7 },
{"-+-", 8 }
};
string xs = "+", ys = "+", zs = "+";
if (x < 0) xs = "-";
if (y < 0) ys = "-";
if (z < 0) zs = "-";
return dict[xs + ys + zs];
}
static void Main(string[] args)
{
Console.Write("введите x: ");
string s = Console.ReadLine();
int x = Int32.Parse(s);
Console.Write("введите y: ");
string s1 = Console.ReadLine();
int y = Int32.Parse(s1);
Console.Write("введите z: ");
string s2 = Console.ReadLine();
int z = Int32.Parse(s2);
Console.Write(GetOctant(x, y, z));
Console.ReadKey();
}