|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.10.2011, 14:30 | #1 |
Форумчанин
Регистрация: 08.06.2011
Сообщений: 693
|
Паскаль. Величина пятен
Есть файл. Пример файла:
PHP код:
Дальше через пробел идет информация о пятне в море. Если пятно есть, то 1, если нет, 0. Записать в другой файл: 1-я строчка: количество пятен 2-я строчка и дальше: площадь пятна и количество пятен такой площади. Оссортировать строчки 2 и более в порядке возрастания. Пример: PHP код:
Последний раз редактировалось hon; 16.10.2011 в 20:20. |
17.10.2011, 22:09 | #2 |
Форумчанин
Регистрация: 08.06.2011
Сообщений: 693
|
32 просмотра и не одного ответа?
|
20.10.2011, 12:55 | #3 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Никогда не ориентируйся на просмотры - это наивно.
Лучше молись, чтобы задача просто кого-то заинтересовала или была в смежной области интересов )) Меня заинтересовала задача, вот решение. Перевести в паскаль можно, думаю, но я точно не буду это делать. Ещё, комменты могу понаписать потом, пока что лениво. Кому нужны - пишем в теме, сделаю, как будет время. Ну и учитываем, если ждать комментов - я пишу их почти всегда на инглише, тут вряд ли будет исключение. Лицензия. автор - я. делаем что-то с кодом, правило хорошего тона - упомянуть меня, постить куда-то желательно моей ссылкой http://phomm.narod.ru/programs/field.zip , в остальном фривар. Последний раз редактировалось phomm; 20.10.2011 в 13:11. |
26.12.2013, 21:07 | #4 |
Форумчанин
Регистрация: 11.12.2010
Сообщений: 116
|
"А как посчитать площадь пятен одинакового размере и из кол-во не знаю."
PHP не знаю но логика такая: Начнем с количества пятен. Сколько единиц, столько и пятен. Считаем единицы. Если пятна одинакового размера, то наверное достаточно будет посчитать размер одного пятна. "площадь пятна и количество пятен такой площади" - не совсем понятно условие. Как обозначается площадь в этой матрице? Тоже единицами? .. Но если площадь пятна 0 то его как бы и нет. А там все равно 1. |
26.12.2013, 22:57 | #5 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Заинтересовали пятна Код phomm посмотрел, даже разбираться не стал. У меня попроще на массивах и тоже delphi
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 26.12.2013 в 23:21. |
27.12.2013, 06:44 | #6 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Да, давно писал программку, было время, ещё был щедрый ))
Я блин старался, а от ТС даже полслова не было, хотя товарищ не однодневный. Суть алгоритма основана на очереди с рекурсивным заполнением. Двойным циклом идём по массиву, встречаем клетку с пятном, создаём на неё очередь, и запускаем рекурсию с этой клетки, рекурсия обходит все прилегающие клетки (в алгоритме предусмотрена переключалка - учитывать ли клетки соприкасающиеся только сторонами или ещё и углами), и они помечаются ссылкой на очередь, которой они принадлежат. На каждой встреченной клетке рекурсия "пушится" и работает с этой клетки, если у клетки больше некуда ступить (все прилегающие клетки уже помечены какой-то очередью), рекурсия "попается". В конце работы размер очереди и будет показывать площадь пятна. Чтобы посчитать колво пятен одинаковой площади, просто бежим и смотрим где у нас головы очередей (их стартовые клетки) и берём из их свойства размер. Программа дополнительно снабжена генератором с задаваемыми размерами карты и степенью дисперсности вода-земля. Аватар, Ваш код тоже непрост, да и я не считаю свой код сложным )) В Вашем коде меня особенно напряг сетленс в четверном вложенном цикле (у меня, конечно, он тоже по сути есть , в TList.Grow , но не в таком количестве - он по сути за логарифм работает, у Вас за степень). Мой код конечно на классах, что сложнее, т.к. требовательнее к знаниям, но имхо декомпозиция даёт ощутимую часть понятливости. Уважаемый vvmcpp, Вы малость были введены в заблуждение, ТС требовался код на паскале, а не пхп. |
27.12.2013, 06:52 | #7 | |
Новичок
Джуниор
Регистрация: 11.10.2011
Сообщений: 3,882
|
Цитата:
Мой вариант.. Код:
Последний раз редактировалось Poma][a; 27.12.2013 в 08:15. |
|
27.12.2013, 08:50 | #8 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 27.12.2013 в 08:56. |
|
27.12.2013, 09:45 | #9 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Да, извиняюсь , в тройном, сперва глянул код, написал в тройном, потом второй раз проглядел и почему-то показалось что в четверном. Исправляю.
На статику негибко. Если входные данные 1000*1000 и всё забито единичками - пятно будет милионной площади, какой статмассив такое съест (ну как в коде задать в смысле) Код Ромахи пробовал запустить, поматерился вводя даже те 25 циферок что указаны у тс , по нескольку раз, но так и не добился работы, где-то происходил креш. Переделывать на чтение файла не хочется, но если автор сделает, то погоняю тесты. Ваш, Аватар, код погонял, не понятно что в исходной картине генерации, посему добавил вывод, ну и плюс чуть увеличил вероятность. Заметка: в мемо установить моноширный шрифт, типа courier new: Код:
Код:
Последний раз редактировалось phomm; 27.12.2013 в 09:49. |
27.12.2013, 10:06 | #10 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Ага, есть такой прокол. Подправил SetCount. Раньше сбрасывал не правильно счетчики
Код:
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 27.12.2013 в 10:26. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка " is not a valid floating point value " (не правильная плавающая величина точки) | kta87 | Помощь студентам | 5 | 27.09.2012 19:37 |
Паскаль, Борланд Паскаль-в чем разница??? | Vremya-Dengy | Паскаль, Turbo Pascal, PascalABC.NET | 13 | 31.05.2011 18:23 |
Как называется величина? | zaport | Помощь студентам | 2 | 21.04.2011 04:21 |
Величина изменения данных текущей даты от предыдущей в сводных таблицах. | Strelec79 | Microsoft Office Excel | 0 | 05.08.2009 19:20 |
Распознование пятен | Yusya | Помощь студентам | 1 | 04.03.2009 16:27 |