поиск ряда к которому принадлежит элемент

  • Автор темы Автор темы berkut
  • Дата начала Дата начала

berkut

Новичок
поиск ряда к которому принадлежит элемент

Есть "матрица" в виде массива, даётся порядковый номер элемента этого массива, нужно найти в каком ряду он находится без использования циклов. После бурного лета мозг отказывается работать.
Ex:
PHP:
$array = array(0, 0, 1, 1, 1, 0, 0, 1, 1); 
/*Выглядит это так: 
001 
110 
011 
размерность разная, но всегда квадрат.*/
Нужно вычеслить, к какому ряду относится допустим 4 элемент массива(ко 2-му ряду)
 
1. корень квадратный из кол-ва элементов
2. округление вверх от деления номера элемента на кол-во элементов в ряду (п.1)

з.ы. хочу видеть вариант с циклом
 
опоздал я. до этого уже додумался. с циклом это я опозорился, просто задача ещё в том, что-бы узнать номера крайних элементов данного ряда
PHP:
// $i - номер эл-та
while ($i % sqrt(sizeof($array))) ++$i; /* получим номер крайнего правого эл-та
зная номер ряда, вычислить крайние эл-ты можно без циклов*/
теперь проблема вычислить номер столбца
 
практически методом тыка, номер столбца - это остаток от деления номера элемента на "ширину матрицы"(при нумеровании эл-ов с еденицы). 0 - ряд это последний ряд(ширина матрицы)
 
Кром либо я туплю, либо ты. Ответ сказали по поводу нахождения ряда, мне ещё нужен и столбец
 
а вот сильная задачка:
Как вычислить крайние точки диагоналей, проходящих через заданную точку? Т.е. дана точка 4, для неё крайние точки диагоналей будут [2, 6] и [0, 8], для точки 3: [3, 7] [0, 1] - каким образом можно вычислить эти точки?
 
Да... Вот они - плоды приверженцев утверждения "программисту/кодеру математику знать не надо" в более извращённой форме - "... арифметику знать не надо".
Да нарисуй ты на бумаге и посмотри, что там да как - ну неужели даже настолько примитивные вещи надо на форуме разжёвывать? И вообще непонятно, с какой это балды для точки 4 - [2,6] и [0,8], а для 3 - [3,7] и [0,1] - телепаты, батенька, в отпуске, а "точки" в матрице можно и хаотично расставлять.
 
рисовал я на бумаге, и про то, что точки в матрице могут быть расставлены" хаотично" я знаю. Но в данной задаче, матрица всегда состоит из последовательного рядаи целых чисел, начиная с нуля. Только размерность разная может быть. Диагонали тоже условны, матрице их не 2, а больше. Для каждой точки - 2 диагонали. Дана точка 4(болдом):
012
345
678
Крайние точки дигоналей, проходящих через неё отмечены жирным:
012
345
678

Дана точка 3, диагонали жирным(в посте выше я ошибся с точками):
012
345
678
В данном случае, сама точка 3 является окончанием "главной" диагонали(справа на лево) и началом 2-ой диагонали(слева на право)

-~{}~ 25.08.05 13:13:

вообще, значения проставленные в матрице здесь не важны, потому-что даётся номер элемента в матрице, и нужно найти номера элементов, состовляющих крайние точки диагоналей
 
berkut
хватит уже разжевывать понятную всем, кроме, может быть, тебя, задачу
здесь нет никакой высшей математики, лишь простейшие арифметические действия
если они кажутся тебе слишком сложными, значит работа программиста не для тебя
 
Tor ну если всё так просто, то почему-бы не помочь, написать несколько слов по теме, вместо сочинения эпопеи про то, кому и кем быть.
 
я тебе написал, как делать, в первом посте
раз тебе этого не достаточно, то все за тебя делать никто не будет
по крайней мере бесплатно
 
всё, допетрил, через номер ряда. всем спасибо.

-~{}~ 26.08.05 00:06:

Я cдаюсь. Не работает моё уравнение.
Крайние точки диагоналей вычисляю в цикле: иду вверх по диагонали, прибавляя к исходной точке ширину матрицы

+/-(для разных диагоналей) 1, тоже самое вниз. И для каждой получившейся в цикле точки, вычисляю ряд и столбец и

проверяю, лежит-ли она на "крайней грани матрицы", если да, то выход из цикла.
Но как-же их вычислить математически. Tor, просвети темень, дай пищу для размышлений
 
Сверху