Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Looks

В двумерном массиве появляются лишние элементы

02.02.2013, 17:42. Показов 645. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, у меня задание "В одномерном массиве с четным количеством элементов (2N) находятся координаты N точек плоскости. Они располагаются в следующем порядке: x1, y1, х2, y2, x3, y3, и т.д. Определить три точки, которые являются вершинами треугольника, для которого разность числа точек вне его и внутри является минимальной."
Этой самой кнопкой
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
private void button1_Click(object sender, EventArgs e)
        {
            float[] arr;
            float[,] arr2;
            int   i, k = 0, k1=0, k2=0, j = 0, j1, j2, count = 0;
            double a, b, c, x1, x2, x3, y1, y2, y3;
 
            if (((textBox1.Text != "") && (textBox1.Text != "-")))
            {
                    string[] str = textBox1.Text.Split(' ');
                    for (i = 0; i < str.Length; i++)
                        if (str[i].Length != 0)
                            count++;
                    if (count % 2 == 0)
                    {
                        arr = new float[count];
                        count = 0;
                        for (i = 0; i < str.Length; i++)
                            if (str[i].Length != 0)
                            {
                                arr[count] = Convert.ToSingle(str[i]);
                                count++;
                            }
                        arr2 = new float[(count / 2)+1, 2];
                        for (i = 0; i < count; i+=2)
                            {
                            arr2[i/2 , 0] = arr[i];
                            arr2[i/2 , 1] = arr[i+1];
                            j++;
                            }
                        for (i = 0; k2 < j-2; i++)
                        {
                            x1 = arr2[i, 0];
                            y1 = arr2[i, 1];
                            for (j1 = i+1; k1 < j - i; j1++)
                            {
                                x2 = arr2[j1, 0];  
                                y2 = arr2[j1, 1];
                                for (j2 = j1+1; k < j - j1; j2++)
                                {
                                    x3 = arr2[j2, 0];
                                    y3 = arr2[j2, 1];
                                    a = Math.Pow((Math.Pow(x2 - x1, 2) + Math.Pow(y2 - y1, 2)), 1 / 2);
                                    b = Math.Pow((Math.Pow(x3 - x2, 2) + Math.Pow(y3 - y2, 2)), 1 / 2);
                                    c = Math.Pow((Math.Pow(x3 - x1, 2) + Math.Pow(y3 - y1, 2)), 1 / 2);
                                    if ((a < b + c) && (b < a + c) && (c < b + a))
                                    {
                                        ver1.Text = Convert.ToString(x1) + " " + Convert.ToString(y1);
                                        ver2.Text = Convert.ToString(x2) + " " + Convert.ToString(y2);
                                        ver3.Text = Convert.ToString(x3) + " " + Convert.ToString(y3);
                                    }
                                    k++;
                                }
                                k1++;
                            }
                            k2++;
                        }
                        
                    }
                    else
                        MessageBox.Show("Введите обе координаты для каждой точки", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
совершается основное действие ,а именно чтение координат из строки, если координат введено четное количество, то заполняем одномерный массив, потом переводим в двумерный, где arr[i,0] - x, а arr[i,1] - y(можно было сразу записывать в двумерный, но это прихоть препода, не знаю, зачем так). Так вот, суть в том, что если у меня, например, 5 координат, то есть 5 x и 5 y, и, соответственно, последние элементы должны быть arr2[4,0] и arr2[4,1], но при отладке оказалось, что в конце двумерного массива arr2 появляются два лишних нулевых элемента arr2[5,0] и arr2[5,1], то есть, как мне кажется, проблема именно в этом куске
C#
1
2
3
4
5
6
 for (i = 0; i < count; i+=2)
                            {
                            arr2[i/2 , 0] = arr[i];
                            arr2[i/2 , 1] = arr[i+1];
                            j++;
                            }
Так же есть некоторые сомнения по определению этих трех точек, проверьте, пожалуйста, мой алгоритм хотя бы немного верный?
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
for (i = 0; k2 < j-2; i++)
                        {
                            x1 = arr2[i, 0];
                            y1 = arr2[i, 1];
                            for (j1 = i+1; k1 < j - i; j1++)
                            {
                                x2 = arr2[j1, 0];  
                                y2 = arr2[j1, 1];
                                for (j2 = j1+1; k < j - j1; j2++)
                                {
                                    x3 = arr2[j2, 0];
                                    y3 = arr2[j2, 1];
                                    a = Math.Pow((Math.Pow(x2 - x1, 2) + Math.Pow(y2 - y1, 2)), 1 / 2);
                                    b = Math.Pow((Math.Pow(x3 - x2, 2) + Math.Pow(y3 - y2, 2)), 1 / 2);
                                    c = Math.Pow((Math.Pow(x3 - x1, 2) + Math.Pow(y3 - y1, 2)), 1 / 2);
                                    if ((a < b + c) && (b < a + c) && (c < b + a))
                                    {
                                        ver1.Text = Convert.ToString(x1) + " " + Convert.ToString(y1);
                                        ver2.Text = Convert.ToString(x2) + " " + Convert.ToString(y2);
                                        ver3.Text = Convert.ToString(x3) + " " + Convert.ToString(y3);
                                    }
                                    k++;
                                }
                                k1++;
                            }
                            k2++;
                        }
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.02.2013, 17:42
Ответы с готовыми решениями:

В Chart появляются лишние точки
Ставлю на график просто точку: this.chart1.Series.Points.AddXY(1, 1); На графике появляются лишние точки.

Не появляются элементы на ListView
Добавил ListView коллекцию, она отображается на форме, но когда запускаю программу ничего не появляется. Подскажите пожалуйста, что...

При запуске формы не появляются все элементы
Запускаю форму, но на ней не появляются кнопки и календарь. Подробнее на изображении

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.02.2013, 17:42
Помогаю со студенческими работами здесь

Min в двумерном массиве
Вот код двумерного массива: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using...

Почему в двумерном массиве появляются такие числа?
при начальной генерации и заполнения массива последнее число или очень большое или вообще не показано, почему так? #include...

В двумерном массиве заменить элементы побочной диагонали на 1, остальные элементы на 0
program d; var N, M: integer; a: array of real; begin N:=5; for var i:=1 to N do begin for var j:=1 to N do begin

В двумерном массиве найти элементы, что введет пользователь и потом эти элементы сплюсовать и вывести
Здравствуйте товарищи знатоки! Передомной постал такой вопрос: Надо в двумерном массиве найти элементы что введет пользователь и...

Сложить элементы в двумерном массиве
В двумерном массиве хранится информация о количестве учеников в каждом классе каждой параллели школы с первой по одиннадцатую (в первом...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru