Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2012, 14:11   #1
kynew
Пользователь
 
Регистрация: 02.11.2012
Сообщений: 14
По умолчанию как исправить код.

Собственно вот мой код.
Код:
использовать Робот
алг 
нач
цел флаг
вещ рад 
вещ макс
флаг:=0
рад:=0
макс:=0
|Поиск максимальной радиации.
|| В правый верхний угол.
нц пока слева свободно
влево
кц
нц пока сверху свободно
вверх
кц
|| Сканируем поле, ища макс радиацию.
нц пока слева стена
нц пока справа свободно
если радиация>макс то
макс:=радиация
все
вправо
кц
если снизу свободно то
вниз
все
нц пока слева свободно и снизу свободно 
если радиация>макс то
макс:=радиация
все
влево
кц
если снизу свободно то
вниз
все
кц
| Поиск ближайщего источника.
нц пока слева свободно и флаг=0
нц пока сверху свободно
если радиация=макс то
закрасить
флаг:=1
все
вверх
кц
влево
нц пока снизу свободно
если радиация=макс то
закрасить
все
вниз
кц
кц
| Переход к месту старта поиска второго источника.
нц пока слева свободно
влево
кц
нц пока сверху свободно
вверх
кц
| Поиска второго источника.
нц пока справа свободно и флаг=1
нц пока снизу свободно
если радиация=макс то
закрасить
флаг:=2
все
вниз
кц
вправо
нц пока сверху свободно
если радиация=макс то
закрасить
все
вверх
кц
кц
кон


Это обстановка, в ней робот работает, но стоит поменять местоположение сточников ( радикально, то есть чтобы площади пересекались и т.д) и алгоритм не работает.

Задача звучит так.
Даны 2 источника силы Н в поле размера Н*М.
Найти источники.
От источников расходится радиоционное поле, которое уменьшается с каждой клеткой на 1, при наложение радиоционных полей радиация суммируется.

Подскажите, намекните, укорите........

Последний раз редактировалось Serge_Bliznykov; 16.11.2012 в 14:16.
kynew вне форума Ответить с цитированием
Старый 16.11.2012, 14:29   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Код:
если радиация=макс то
Первый источник, при таком обходе зигзагом из угла, должен находиться верно (потому что клетки с радиацией=макс вытягиваются в линию от первого источника ко второму). Дальше, если можно запомнить позицию, следует запомнить место первого источника и продолжить обход, разыскивая клетку с радиацией=макс, которая находится дальше всего от первого источника - это будет второй источник.
Abstraction вне форума Ответить с цитированием
Старый 16.11.2012, 14:36   #3
kynew
Пользователь
 
Регистрация: 02.11.2012
Сообщений: 14
По умолчанию

В данной обстановке программа работает, но, к примеру такую - закрашивает не то.

А так же другие обстановки, в которых программа не работает. Например, обстановка в 1 столбик. Циклы даже не начинают работать.
kynew вне форума Ответить с цитированием
Старый 16.11.2012, 14:51   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Странно... В приведённом случае, по идее, интенсивность в самих источниках - 5, и это единственные клетки с такой интенсивностью.
Какие-нибудь средства пошагового выполнения среда предоставляет? Чтобы Вы могли посмотреть, какие шаги и в каком порядке исполняются?
Abstraction вне форума Ответить с цитированием
Старый 16.11.2012, 15:18   #5
kynew
Пользователь
 
Регистрация: 02.11.2012
Сообщений: 14
По умолчанию

Предоставляет. Нет, там в источнике интенсивность 3. Суммируясь - 4.
kynew вне форума Ответить с цитированием
Старый 16.11.2012, 15:29   #6
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

3+2=4? Или на второй сетке другие правила?

Э-э, стоп-стоп-стоп, а почему в нижнем левом углу 3, а не 2?
Abstraction вне форума Ответить с цитированием
Старый 16.11.2012, 15:50   #7
kynew
Пользователь
 
Регистрация: 02.11.2012
Сообщений: 14
По умолчанию

Вы правы, в данном случае - моя ошибка. Но, я рассматривал подобные обстановки, в которых значения были, как у меня или похоже. Где существует несколько источников и много равных по радиации.
kynew вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исправить код саша40 Мультимедиа в Delphi 7 06.11.2012 22:01
Код на си не верен ,как исправить evgpol Помощь студентам 3 20.05.2011 16:58
исправить код seed92 Помощь студентам 0 21.02.2011 16:02
Как исправить код? kolyan123 Помощь студентам 1 29.10.2009 19:23
Исправить код IndividBezLica Помощь студентам 0 02.06.2009 09:41