1 | ||||||
Особый цикл05.02.2013, 15:24. Показов 797. Ответов 16
Метки нет (Все метки)
Всем привет. Возникла небольшая проблема при написании программы. Необходим особый цикл. Я совсем не понимаю как его написать, вводится количество точек N, далее необходимо вбить значения координат точек - это отдельные массивы для координат X и Y, это все есть. Но как сделать так, что бы в самом теле цикла происходило разбиение N на группы по три точки, где уже что-либо считается. Если делать методом исключения - то я понимаю только для N = 4, то - есть исключается первое значение, потом вычисляется допустим сумма остальных трех, потом считается значение всех трех точек, кроме второй и т.д. А как организовать такой цикл для произвольного N? Пусть даже не произвольного, но хотя бы кратного трем. Вот пока, что есть:
0
|
05.02.2013, 15:24 | |
Ответы с готовыми решениями:
16
Особый элемент Определить скалярное произведение строки и столбца, где расположен максимальный особый элемент Удалить строки заданной матрицы, в которых есть хотя бы один особый элемент Удалить первый нулевой элемент массива и добавить после каждого чётного элемента особый элемент |
594 / 532 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
|
|
05.02.2013, 15:27 | 2 |
прошу прощения, я ничего не понял, вам для каких целей?
0
|
33 / 33 / 6
Регистрация: 19.01.2013
Сообщений: 33
|
|
05.02.2013, 16:56 | 4 |
Nuclear_Razor, Как и остальным, мне не очень понятно что вы хотите сделать. Опишите пожалуйста что делает ваша программа поподробнее или вообще для чего она нужна, может есть решение её более простым способом. Если я вас все таки правильно понял то посмотрите на такую вещь как двумерные массивы.
0
|
1823 / 731 / 99
Регистрация: 01.10.2012
Сообщений: 3,739
|
|
05.02.2013, 16:58 | 5 |
До меня тоже не дошло что нужно сделать
0
|
05.02.2013, 17:07 [ТС] | 6 |
define undef, можно упростить задачу. Задано количество точек N. Необходимо посчитать центр масс некой фигуры, например треугольника, он считается по трем координатам по X и Y соответственно. Я же не могу просто написать массив накопления суммы и разделить на три. Нужен иной цикл. Цикл с последовательным исключением координат точки, то есть если их 4: то делать так исключить первую точку, посчитать Xc и Yc последующих трех, потом исключить вторую точку и посчитать Xc и Yc для первой и последних, кроме второй. То есть получиться четыре разных значения центра масс. Так вот мне интересно, как организовать такой цикл, для произвольного количества точек. Насчет двумерных массивов - я одномерные использовал для наглядности вывода на экран, в задаче это не принципиально важно какой тип массивов использовать.
0
|
1823 / 731 / 99
Регистрация: 01.10.2012
Сообщений: 3,739
|
|
05.02.2013, 17:25 | 7 |
Крнечно Вы можете вводить какие-то свои термины - но при этом другим становится Вас трудно понять. Фигура на плоскости XY не имеет объема, а значит нет и массы. Наверное Вам нужно найти точку ее центра. Простейший способ сложить все X/Y и поделить на число точек. Вас смущает что точки могут стоять "где густо а где и пусто" - и Вы ищете способ лучше. Так?
0
|
05.02.2013, 17:31 [ТС] | 8 |
Igor3D, масса может сосредоточена в точках, на сторонах фигуры или равномерно распределена по всей площади фигуры. Дело вообще не в математическом аспекте, а именно в самом цикле. Я просто привел центр масс как пример для решения. Я думаю тут дело даже не в цикле, если использовать такой "метод" , а может быть в рекурсии. Рекурсию не знаю совсем.
0
|
171 / 79 / 4
Регистрация: 05.12.2012
Сообщений: 217
|
||||||
05.02.2013, 17:31 | 9 | |||||
Пускай у Вас есть N точек и требуется найти все K-элементные подмножества и что-то с ними сделать.
Если совсем по деревенски, то я это вижу как-то так: // Здесь, array - массив точек, result - результ( в каком-то твоем виде ), placesArray - вектор, временно хранящий позиции выбранных элементов. Код очень схематический, поскольку все равно четко сформулированной задачи я не понял В программе запускаешь do_step_for_i( result, array, placesArray ) Smth, YourType - Ваши форматы результата и условия.
0
|
Заблокирован
|
|
05.02.2013, 17:31 | 10 |
Nuclear_Razor, надо было написать что всё тело разбиваешь в плоскости на элементарные треугольники, что для каждого треугольника находишь элементарный центр масс, из центров масс молучаешь сетку уже 2-го порядка (т.е теже треугольники но в 3 раза меньше чем изначальных точке) и делаешь такие вот подсчёты пока точек не останется три штуки - это будут те самые последни 3 точки(у меня они красным), которые и дадут при подсчёте их центра масс - центр масс всего тела. Ну и что тебя тут смущает?Заведи цикл для всех точек и для каждой тройки найди центр масс и так прогони итерационно до 3-х точек
0
|
1823 / 731 / 99
Регистрация: 01.10.2012
Сообщений: 3,739
|
|
05.02.2013, 17:50 | 12 |
Операция разбиения может быть сложной если фигура не выпуклая. И что-то не очень ясно как строить сетки 2-го и след порядков. Может по-народному, Монте-Карликом?
0
|
Заблокирован
|
||||||
05.02.2013, 18:18 | 13 | |||||
показываю как оно всё может выглядеть
http://ru.wikipedia.org/wiki/Центроид_треугольника http://dxdy.ru/topic12982.html при решении сделано предположение о равенстве масс всех элементарных узлов http://codepad.org/PIOevn2r Кликните здесь для просмотра всего текста
0
|
Заблокирован
|
|
05.02.2013, 18:26 | 14 |
Не по теме: - речь шла о двумерной сетке потому проблем с нахождением элементарных центров просто нет - главное лишь бы плотность везде одинаковой была - это вот для этого (в принципе в физике так и предполагают что плотность тела во всех точках одинакова) Добавлено через 4 минуты
0
|
1823 / 731 / 99
Регистрация: 01.10.2012
Сообщений: 3,739
|
||||||
05.02.2013, 18:40 | 15 | |||||
Ну если фигура выпуклая, то все просто
0
|
05.02.2013, 18:51 [ТС] | 16 | ||||||||||
Всем большое спасибо за подсказки! Вы мне очень помогли!
Юрий, этот участок кода в вашей программе очень пригодился:
Igor3D, честно говоря, у вас я уже не понял, что значит строка:
Igor3D, если фигура не выпуклая, то используя метод Монте - Карло, нужно будет найти площадь многоугольника?
0
|
1823 / 731 / 99
Регистрация: 01.10.2012
Сообщений: 3,739
|
||||||
05.02.2013, 19:04 | 17 | |||||
Константа 0.0f имеет тип float, в 0.0 double
Центр равен взвешенной (по площади) сумме всех треугольников
0
|
05.02.2013, 19:04 | |
05.02.2013, 19:04 | |
Помогаю со студенческими работами здесь
17
Задача на "особый" элемент матрицы Цикл: Посчитать среднее арифметическое всех чисел в заданном диапазоне. Цикл while. Цикл: Определить, сколько простейших организмов будет через каждый период их деления. Цикл while. Цикл: цикл for вообще никак не воспринимается транслятором Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |