|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.11.2009, 12:22 | #1 |
Новичок
Джуниор
Регистрация: 13.11.2009
Сообщений: 3
|
Обход ячеек по спираль с произвольным центром.
Здравствуйте! Мне нужна Ваша помощь.
Нужно составить программу обхода ячеек массива по спирали до нахождения значения "0". Начало обхода запрашивается с клавиатуры. При этом проверив ячейку однажды повторно она не проверяется. |
14.11.2009, 12:27 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
1) что уже сделали?
2) Массив двухмерный? Тогда лучше называть его матрицей! И какой размер матрицы? 3) правила обхода? если в матрице 5 на 5 (к примеру), выбрана ячейка, например, во 2-й строке чётвёртая. Какая следующая будет по пути обхода? напишите (а лучше нарисуйте) схему обхода! |
15.11.2009, 15:00 | #3 |
Новичок
Джуниор
Регистрация: 13.11.2009
Сообщений: 3
|
Массив двумерный, произвольный
Обход можно начинать в любую сторону. Например так: Спираль пока не получается, сделала проверку окрестными строками и столбцами |
15.11.2009, 15:40 | #4 |
Форумчанин
Регистрация: 10.10.2009
Сообщений: 680
|
Заведите метки минимума и максимума в обеих направлениях, на каждом витке разводите эти ограничения, а для проверки "финиша" заведите дополнительный счетчик, который будет увеличиваться на 1 при каждом проходе через ячейку основной матрицы. Когда он достигнет общего количества ячеек матрицы, - обход закончен. Вначале минимальный икс=максимальный икс=икс начальный, аналогично с игреком.
З.Ы. Почитал условие - надо так же прицепить вторую проверку, на нахождение ноля в основной матрице. |
15.11.2009, 20:56 | #5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
я, наверное, тупой... не могу понять, по какому правилу осуществляется переход на другую строку, если достигаем границы матрицы... ;(
вот, если начинаем обход с элемента [1,1] (3) следующий элемент на один вниз [1,2] (4), а следующий должен быть элемент левее 4-ки... это какой будет? ну и, аналогично, если начать с 2-ки ([7,7]) следующим будет 1 [8,7], потом 7 - 3 - 8 - 5 - а потом?!?! А в целом и общем, я согласен с алгоритмом, предложенным LeBron... |
15.11.2009, 21:18 | #6 |
Форумчанин
Регистрация: 10.10.2009
Сообщений: 680
|
|
16.11.2009, 10:09 | #7 | |
Новичок
Джуниор
Регистрация: 13.11.2009
Сообщений: 3
|
Цитата:
Если окрестности точки представляют полный обход, то это будет "круг" если упираются в одну границу, то это будет напоминать букву "П" (скоба в любом направлении) если упирается в две границы, то это будет напоминать букву "Г" (угол в любом направлении) если у упирается в три границы, то это будет линия У меня пока мысли сделать так: сохранить массив во вспомогательном так, чтобы выбранная точка оказалась в центре и применить обычный обход по спирали, но не знаю насколько это оптимально... ведь массив может быть большим... |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
логарифмическая спираль с++ | salmanov | Помощь студентам | 0 | 23.06.2009 21:17 |
Дан круг с центром в точке А1 и радиусом R. | DomiR | Помощь студентам | 16 | 29.05.2009 12:42 |
Как можно организовать открытие папки с содержащимся в нем произвольным файлом | Sewell | Общие вопросы Delphi | 5 | 27.05.2009 22:11 |
Циклы с произвольным количеством шагов | Walter | Помощь студентам | 11 | 09.11.2008 16:53 |
Проблема с загруз центром | [Smarik] | PHP | 0 | 16.03.2008 15:36 |