Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
 Аватар для irineyxxx
151 / 53 / 11
Регистрация: 18.09.2011
Сообщений: 730

Как найти точки по четвертям максимальные от оси 0

11.02.2012, 15:34. Показов 1858. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Люди, в общем такая задача стоит на данный момент у меня. Уже голову ломаю, как найти точки по четвертям максимальные от оси 0 ? Вот кидаю картинку как нужно + проект с исходным кодом, очень прошу в этом коде доработать и снова выложить его сюда.

Пытался делать так:
C#
1
int max = Points.Max(Point => Points[p].X);
- не получается...
Миниатюры
Как найти точки по четвертям максимальные от оси 0  
Вложения
Тип файла: rar Graphics.rar (775.5 Кб, 17 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.02.2012, 15:34
Ответы с готовыми решениями:

Указать, каким четвертям координатной плоскости принадлежат точки заданного отрезка
Даны вещественные числа x1, y1, x2, y2. Указать, каким четвертям координатной плоскости принадлежат точки отрезка с концами (x1,y1) и...

На оси OZ найти точку, равноудалённую от точки и от плоскости
На оси OZ найти точку, равноудалённую от точки M(1,1,1) и от плоскости 2x-2y+z-12=0

Найти точки на кривой, в которых ее касательная параллельна оси Ох
Возник еще вопрос по этой теме. Нужно найти точки на кривой в которых ее касательная параллельна оси Ох. Касательная параллельна оси Ох...

12
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
11.02.2012, 16:05
1-я четверть: макс. Х при У больше нуля
2-я четверть: мин. Х при У больше нуля
3-я четверть: мин. Х при У меньше нуля
4-я четверть: макс Х при У меньше нуля.

Можно сделать четыре выборки через Linq, а можно одну, но вручную:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Point q1, q2, q3, q4;
q1 = q2 = q3 = q4 = new Point();
 
foreach (Point pt in Points)
{
   if (pt.Y > 0)
   {
      if (pt.X > q1.X) q1 = pt;
      else if (pt.X < q2.Y) q2 = pt;
   }
   else if (pt.Y < 0)
   {
      if (pt.X < q3.X) q3 = pt;
      else if (pt.X > q4.X) q4 = pt;
   }
}
Что-то типа этого.
Точки в начале координат игнорируются.
0
 Аватар для irineyxxx
151 / 53 / 11
Регистрация: 18.09.2011
Сообщений: 730
11.02.2012, 16:20  [ТС]
kolorotur, Уважаемый скачайте, если не трудно мой проект и покажите класс мастера
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
11.02.2012, 16:40
Я всегда скачиваю и смотрю проекты, если они прицеплены, перед тем, как отвечать. Кстати, на моем компе все кнопки почему-то черными прямоугольниками выглядят.

По поводу "доработать".
Ну я же не знаю в какой момент времени вам нужно находить максимумы и что с ними дальше делать. В обработчике нажатия по кнопке Draw в блоке с последним условием вы создаете массив Points на 80 элементов и заполняете его рандомными точками. Именно с этим массивом работает вышеприведенный мной код.
Скопируйте его в нужное вам место в проекте, переменные q1, q2, q3 и q4 будут содержать точки, расположенные дальше всего по оси Х от начала координат для соответствующих четвертей.

Если вы хотите находить максимумы по клику на другую кнопку, то массив Points надо повысить до переменной класса.
0
 Аватар для irineyxxx
151 / 53 / 11
Регистрация: 18.09.2011
Сообщений: 730
11.02.2012, 16:44  [ТС]
kolorotur, Да при щелчке на кнопку там всё находится, сделайте пожалуйста, очень благодарен буду.
0
1617 / 1182 / 553
Регистрация: 08.01.2012
Сообщений: 4,561
11.02.2012, 17:08
может я задачу недопонял, но что Пифагора отменили?
0
 Аватар для irineyxxx
151 / 53 / 11
Регистрация: 18.09.2011
Сообщений: 730
11.02.2012, 17:11  [ТС]
Люди, я просто прошу помощи...
0
1617 / 1182 / 553
Регистрация: 08.01.2012
Сообщений: 4,561
11.02.2012, 18:14
насколько понял проблема не в графике, а именно в нахождении точек, так что на консоли:
четверть, X, Y, растояние
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
    class Program
    {
        struct Dot
        {
            public int x, y, qr;
            public double l;
        }
 
        static void BubbleSort(Dot[] Ar)
        {
            for (int j = 0; j < 79; j++)
            {
                bool Swap = false;
                for (int k = 79; k > j; k--)
                    if (Ar[k].qr < Ar[k - 1].qr || Ar[k].qr == Ar[k - 1].qr && Ar[k].l > Ar[k - 1].l)
                    {
                        Dot a = Ar[k];
                        Ar[k] = Ar[k - 1];
                        Ar[k - 1] = a;
                        Swap = true;
                    }
                if (!Swap) break;
            }
        }
 
        static void Main(string[] args)
        {
 
            Dot[] Ar = new Dot[80];
            Random Rdm = new Random();
            int i = 0;
 
            while (i < 80)
            {
                Ar[i].x = Rdm.Next(201) - 100;
                Ar[i].y = Rdm.Next(201) - 100;
                if (Ar[i].x != 0 && Ar[i].y != 0)
                {
                    Ar[i].l = Math.Sqrt(Ar[i].x * Ar[i].x + Ar[i].y * Ar[i].y);
                    if (Ar[i].x > 0) Ar[i].qr = (Ar[i].y > 0 ? 1 : 4);
                    else Ar[i].qr = (Ar[i].y > 0 ? 2 : 3);
                    i++;
                }
            }
            BubbleSort(Ar);
 
            int qr = 0;
            for (i = 0; i < 80; i++)
            {
                if (qr != Ar[i].qr)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    qr = Ar[i].qr;
                }
                else Console.ForegroundColor = ConsoleColor.White;
                Console.WriteLine("{0} {1,4} {2,4} {3,7}", Ar[i].qr, Ar[i].x, Ar[i].y, Ar[i].l.ToString("F2"));
            }
            Console.ReadLine();
        }
    }
0
 Аватар для irineyxxx
151 / 53 / 11
Регистрация: 18.09.2011
Сообщений: 730
11.02.2012, 20:33  [ТС]
Люди я показать код тоже могу, пожалуйста прошу, скачать мой проект и туда вписать, вот при вписании кода проблема

Добавлено через 1 час 54 минуты
жду.....
0
95 / 95 / 15
Регистрация: 11.11.2010
Сообщений: 424
11.02.2012, 23:24
Вам правильный вариант уже подсказали. Вначале разбейте на четыре подколлекции точек (для каждого квадранта). Далее используйте теорему Пифагора: катеты соответственны равны координатам X и Y. C^2=X^2+Y^2. Сравниваете C^2 для каждой точки. Самой удалённой точке соответствует самое большое C^2
0
 Аватар для irineyxxx
151 / 53 / 11
Регистрация: 18.09.2011
Сообщений: 730
14.02.2012, 17:47  [ТС]
Люди, пожалуйста сделайте за меня ((( ни как не могу (((9 мозг ломаю уже какой день ( не мучайте человека, я уже ни как не справляюсь
0
1617 / 1182 / 553
Регистрация: 08.01.2012
Сообщений: 4,561
14.02.2012, 18:42
форму побольше сделай ~700*700
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
namespace GraphDot
{
    public partial class Dots : Form
    {
        struct Dot
        {
            public int x, y, qr;
            public double l;
        }
 
        private void Start_Click(object sender, EventArgs e)
        {
            Graphics Gr = CreateGraphics();
            int X0 = ClientSize.Width / 2, Y0 = ClientSize.Height / 2;
            Pen Pn = new Pen(Color.Black, 4);
 
            LsBox.Items.Clear();
            Gr.Clear(DefaultBackColor);
            Gr.DrawLine(Pens.Blue, X0, 0, X0, ClientSize.Height - 1);
            Gr.DrawLine(Pens.Blue, 0, Y0, ClientSize.Width - 1, Y0);
            
            Dot[] Ar = new Dot[80];
            Random Rdm = new Random();
            int i = 0;
 
            while (i < 80)
            {
                Ar[i].x = Rdm.Next(201) - 100;
                Ar[i].y = Rdm.Next(201) - 100;
                if (Ar[i].x != 0 && Ar[i].y != 0)
                {
                    Ar[i].l = Math.Sqrt(Ar[i].x * Ar[i].x + Ar[i].y * Ar[i].y);
                    if (Ar[i].x > 0) Ar[i].qr = (Ar[i].y > 0 ? 1 : 4);
                    else Ar[i].qr = (Ar[i].y > 0 ? 2 : 3);
                    i++;
                }
            }
            BubbleSort(Ar);
 
            int qr = 0;
            for (i = 0; i < 80; i++)
            {
                if (qr != Ar[i].qr)
                {
                    Pn.Color = Color.Red;
                    qr = Ar[i].qr;
                    LsBox.Items.Add(String.Format("{0,4} {1,4} {2,7}", Ar[i].x, Ar[i].y, Ar[i].l.ToString("F2")));
                }
                else Pn.Color = Color.Black;
                Gr.DrawLine(Pn, Ar[i].x * 3 + X0, Y0 - Ar[i].y * 3, Ar[i].x * 3 + 3 + X0, Y0 - Ar[i].y * 3);
            }
        }
 
        static void BubbleSort(Dot[] Ar)
        {
            for (int j = 0; j < 79; j++)
            {
                bool Swap = false;
                for (int k = 79; k > j; k--)
                    if (Ar[k].qr < Ar[k - 1].qr || Ar[k].qr == Ar[k - 1].qr && Ar[k].l > Ar[k - 1].l)
                    {
                        Dot a = Ar[k];
                        Ar[k] = Ar[k - 1];
                        Ar[k - 1] = a;
                        Swap = true;
                    }
                if (!Swap) break;
            }
        }
        
        public Dots()
        {
            InitializeComponent();
        }
    }
}
0
1617 / 1182 / 553
Регистрация: 08.01.2012
Сообщений: 4,561
14.02.2012, 18:46
Start - Button
LsBox - ListBox
Миниатюры
Как найти точки по четвертям максимальные от оси 0  
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.02.2012, 18:46
Помогаю со студенческими работами здесь

Найти точки, в которых касательные кривой параллельны оси абсцисс.
Помогите плиз, подробно распишите задания: 3.Решить задачу решение отобразить на графике:

Найти расстояние от диафрагмы до точки наблюдения, находящейся на оси отверстия
Здравствуйте! У меня очень большие проблемы с этой задачей.Как тут рассудить? От чего нужно отталкнуться? Ничего не...

Найти точки графика функции f, в которых касательная параллельна оси абсцисс.
258. Найти точки графика функции, f в которой касательная параллельна оси абсцисс. Г) f(х) = √2х – 2 sin x ...

Найти точки графика функции, f в которой касательная параллельна оси абсцисс.
258. Найти точки графика функции, f в которой касательная параллельна оси абсцисс. Г) f(х) = √2х – 2 sin x ...

Даны три точки на числовой оси. Найти длины отрезков и их сумму
1 Даны три точки A, B, C на числовой оси. Найти длины отрезков AC и BC и их сумму.


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru