![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 13.11.2009
Сообщений: 3
|
![]()
Здравствуйте! Мне нужна Ваша помощь.
Нужно составить программу обхода ячеек массива по спирали до нахождения значения "0". Начало обхода запрашивается с клавиатуры. При этом проверив ячейку однажды повторно она не проверяется. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
1) что уже сделали?
2) Массив двухмерный? Тогда лучше называть его матрицей! И какой размер матрицы? 3) правила обхода? если в матрице 5 на 5 (к примеру), выбрана ячейка, например, во 2-й строке чётвёртая. Какая следующая будет по пути обхода? напишите (а лучше нарисуйте) схему обхода! |
![]() |
![]() |
![]() |
#3 |
Новичок
Джуниор
Регистрация: 13.11.2009
Сообщений: 3
|
![]()
Массив двумерный, произвольный
Обход можно начинать в любую сторону. Например так: ![]() Спираль пока не получается, сделала проверку окрестными строками и столбцами ![]() |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 10.10.2009
Сообщений: 680
|
![]()
Заведите метки минимума и максимума в обеих направлениях, на каждом витке разводите эти ограничения, а для проверки "финиша" заведите дополнительный счетчик, который будет увеличиваться на 1 при каждом проходе через ячейку основной матрицы. Когда он достигнет общего количества ячеек матрицы, - обход закончен. Вначале минимальный икс=максимальный икс=икс начальный, аналогично с игреком.
З.Ы. Почитал условие - надо так же прицепить вторую проверку, на нахождение ноля в основной матрице. |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
я, наверное, тупой... не могу понять, по какому правилу осуществляется переход на другую строку, если достигаем границы матрицы... ;(
вот, если начинаем обход с элемента [1,1] (3) следующий элемент на один вниз [1,2] (4), а следующий должен быть элемент левее 4-ки... это какой будет? ну и, аналогично, если начать с 2-ки ([7,7]) следующим будет 1 [8,7], потом 7 - 3 - 8 - 5 - а потом?!?! А в целом и общем, я согласен с алгоритмом, предложенным LeBron... |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 10.10.2009
Сообщений: 680
|
![]() |
![]() |
![]() |
![]() |
#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 |