Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 07.06.2016
Сообщений: 4
1

Как определить принадлежность точки октанту?

08.09.2016, 02:11. Показов 1622. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Стоит задача - написать программу для определения принадлежности точки октанту. Октант - это четверть в трехмерном пространстве. Все довольно просто если бы не нужно было написать программу которая будет это делать с помощью всего трех атомарных условий(Условие над которым невозможно произвести дальнейшуюю декомпозицию. Тоесть условие которое больше нельзя разложить. Без логических операторов. ).
Максимум получилось сделать с помощью семи.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.09.2016, 02:11
Ответы с готовыми решениями:

Определить принадлежность точки треугольнику
не пашет 2017 и 2015 вижуал студио так что надо разобраться по другому 2. написать программу...

Определить принадлежность точки заштрихованной области
Написать программу, которая определяет, попадает ли точка с заданными координатами в область,...

Определить принадлежность точки заштрихованной области
Дана точка на плоскости с координатами (х, у). Составить программу, которая выдает одно из...

Как выполнить проверку на принадлежность расположенности точки на окружности
Здравствуйте! Помогите разобраться с вопросом,пожалуйста. У нас есть массив размером ,N вводится...

15
6219 / 2467 / 725
Регистрация: 11.04.2015
Сообщений: 3,987
Записей в блоге: 43
08.09.2016, 10:28 2
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        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];
        }
1
84 / 85 / 48
Регистрация: 12.10.2013
Сообщений: 1,079
10.09.2016, 01:35 3
Дядя Вова , жутко извиняюсь за непонимание некоторых вещей !!! Как увидеть результат работы метода ???Пробовал так ,но
получилась чушь!!!

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 class Program
    {
        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(s);
            Console.Write("введите z:");
            string s2 = Console.ReadLine(); ;
            int z = Int32.Parse(s);
            Console.Write( GetOctant( x, y, z));
            Console.ReadKey();
        }
}
0
64 / 68 / 18
Регистрация: 21.10.2015
Сообщений: 228
10.09.2016, 01:49 4
Цитата Сообщение от Веселый Посмотреть сообщение
Дядя Вова , жутко извиняюсь за непонимание некоторых вещей !!! Как увидеть результат работы метода ???Пробовал так ,но
получилась чушь!!
у тебя и "X" и "Y" и "Z" идут из одной строки "S", а получаются в трех разных.
0
84 / 85 / 48
Регистрация: 12.10.2013
Сообщений: 1,079
10.09.2016, 02:36 5
iDReeM, имхо это не имеет значения . Я просто ввожу перменные x,y,z для метода GetOctant( x, y, z) с консоли.
Я думаю что в этом случае результат работы метода не совсем чушь.Почитал про класс Dictionary ,думаю результат работы метода некий хеш-код .Поправьте если не прав.

Добавлено через 5 минут
Ввёл для x y z одни отрицательные значения,получил код 7.

Добавлено через 3 минуты
3 D сложная вещь , но понять можно.

Добавлено через 16 минут
iDReeM, я был не прав .Я использовал (одну) переменную
C#
1
string s
, метод заработал по другому.
0
84 / 85 / 48
Регистрация: 12.10.2013
Сообщений: 1,079
10.09.2016, 03:35 6
Видно так.
Миниатюры
Как определить принадлежность точки октанту?  
0
64 / 68 / 18
Регистрация: 21.10.2015
Сообщений: 228
10.09.2016, 04:27 7
Цитата Сообщение от Веселый Посмотреть сообщение
Поправьте если не прав
не прав
0
84 / 85 / 48
Регистрация: 12.10.2013
Сообщений: 1,079
10.09.2016, 07:33 8
В чём ???

Добавлено через 5 минут
Я же изменил ввод с консоли.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
static void Main(string[] args)
        {
            Console.Write("введите x:");
            string s = Console.ReadLine(); ;
            int x = Int32.Parse(s);
            Console.Write("введите y:");
            s = Console.ReadLine(); 
            int y = Int32.Parse(s);
            Console.Write("введите z:");
            s = Console.ReadLine(); ;
            int z = Int32.Parse(s);
            Console.Write( GetOctant( x, y, z));
            Console.ReadKey();
        }
Добавлено через 3 минуты
Может с рисунком что-то не так ???
0
6219 / 2467 / 725
Регистрация: 11.04.2015
Сообщений: 3,987
Записей в блоге: 43
10.09.2016, 07:50 9
Веселый, в википедии в статье Октант есть рисунок, там все октанты пронумерованы. Табличку распределения октантов по знакам координат я взял оттуда же, так что должно совпадать.
0
84 / 85 / 48
Регистрация: 12.10.2013
Сообщений: 1,079
10.09.2016, 07:58 10
Но направление мыслей то правильное! Вы хотите сказать, что я просто не пронумеровап октанты , diadiavova???
0
6219 / 2467 / 725
Регистрация: 11.04.2015
Сообщений: 3,987
Записей в блоге: 43
10.09.2016, 08:04 11
Веселый, так, а что не так с методом-то? В каких ситуациях он выдаёт неверный ответ? Мне сложно что-то сказать, пока проблема не сформулирована.
0
112 / 83 / 32
Регистрация: 10.08.2014
Сообщений: 420
10.09.2016, 12:08 12
Не надо ничего путать. С методом всё нормально за исключением ситуаций, когда точка имеет любое количество координат равных нулю - тогда октант не определён. Но это, если того требует условие, и поправить это - уже дело того, кому эту проблему действительно нужно решить.
0
6219 / 2467 / 725
Регистрация: 11.04.2015
Сообщений: 3,987
Записей в блоге: 43
10.09.2016, 12:44 13
baliar, ну опять-таки, если верить статье в википедии - плюс в табличке означает, что соответствующая координата больше или равна нулю. То есть ноль относят к положительной полуоси.
1
64 / 68 / 18
Регистрация: 21.10.2015
Сообщений: 228
10.09.2016, 15:18 14
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 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();
        }
смотрим что на выходе, вводим на пример 12 13 и 15 и видим результат, цифра 1. что у нас под цифрой 1?? {"+++", 1 } ? мм?
Миниатюры
Как определить принадлежность точки октанту?  
0
64 / 68 / 18
Регистрация: 21.10.2015
Сообщений: 228
10.09.2016, 15:20 15
введи 7, -5 и 12. выдаст 2, что под номером 2???? "+-+" 7 +, -5 -, 12 +
0
269 / 253 / 186
Регистрация: 28.10.2015
Сообщений: 723
11.09.2016, 17:48 16
C#
1
(x < 0 ? 1 : 0) + (y < 0 ? 2 : 0) + (z < 0 ? 4 : 0)
0
11.09.2016, 17:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.09.2016, 17:48
Помогаю со студенческими работами здесь

Принадлежность точки к закрашенной области
Здравствуйте, не могу понять, какие условия сделать для if, помогите, пожалуйста

Принадлежность точки к закрашенной области
Дорогие друзья, помогите написать код к следующему заданию: Для данных областей составить...

Принадлежность точки только правой части окружности
(x-x1)^2 + (y-y1)^2 &lt;= R^2, где R - радиус окружности. Т.к мне нужна принадлежность только к...

Программа определяющая принадлежность точки к закрашенной области
Вообще не понимаю как сделать((( Если кто-то знает, напишите готовый код, нужен срочно((( C#


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru