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

berkut

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

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

Tor

Новичок
1. корень квадратный из кол-ва элементов
2. округление вверх от деления номера элемента на кол-во элементов в ряду (п.1)

з.ы. хочу видеть вариант с циклом
 

berkut

Новичок
опоздал я. до этого уже додумался. с циклом это я опозорился, просто задача ещё в том, что-бы узнать номера крайних элементов данного ряда
PHP:
// $i - номер эл-та
while ($i % sqrt(sizeof($array))) ++$i; /* получим номер крайнего правого эл-та
зная номер ряда, вычислить крайние эл-ты можно без циклов*/
теперь проблема вычислить номер столбца
 

berkut

Новичок
практически методом тыка, номер столбца - это остаток от деления номера элемента на "ширину матрицы"(при нумеровании эл-ов с еденицы). 0 - ряд это последний ряд(ширина матрицы)
 

berkut

Новичок
Кром либо я туплю, либо ты. Ответ сказали по поводу нахождения ряда, мне ещё нужен и столбец
 

berkut

Новичок
а вот сильная задачка:
Как вычислить крайние точки диагоналей, проходящих через заданную точку? Т.е. дана точка 4, для неё крайние точки диагоналей будут [2, 6] и [0, 8], для точки 3: [3, 7] [0, 1] - каким образом можно вычислить эти точки?
 

SiMM

Новичок
Да... Вот они - плоды приверженцев утверждения "программисту/кодеру математику знать не надо" в более извращённой форме - "... арифметику знать не надо".
Да нарисуй ты на бумаге и посмотри, что там да как - ну неужели даже настолько примитивные вещи надо на форуме разжёвывать? И вообще непонятно, с какой это балды для точки 4 - [2,6] и [0,8], а для 3 - [3,7] и [0,1] - телепаты, батенька, в отпуске, а "точки" в матрице можно и хаотично расставлять.
 

berkut

Новичок
рисовал я на бумаге, и про то, что точки в матрице могут быть расставлены" хаотично" я знаю. Но в данной задаче, матрица всегда состоит из последовательного рядаи целых чисел, начиная с нуля. Только размерность разная может быть. Диагонали тоже условны, матрице их не 2, а больше. Для каждой точки - 2 диагонали. Дана точка 4(болдом):
012
345
678
Крайние точки дигоналей, проходящих через неё отмечены жирным:
012
345
678

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

-~{}~ 25.08.05 13:13:

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

Tor

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

berkut

Новичок
Tor ну если всё так просто, то почему-бы не помочь, написать несколько слов по теме, вместо сочинения эпопеи про то, кому и кем быть.
 

Tor

Новичок
я тебе написал, как делать, в первом посте
раз тебе этого не достаточно, то все за тебя делать никто не будет
по крайней мере бесплатно
 

berkut

Новичок
всё, допетрил, через номер ряда. всем спасибо.

-~{}~ 26.08.05 00:06:

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

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

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