Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите, кому не лень.... Программку бы наваять... да знаний нет.( 
:(
    Опции темы
Евгений
  Дата 16.1.2003, 15:03 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











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

 в файле содержаться координаты прямоугольников (не важно сколько
 хоть 500....)
 первая строка - кол-во прям-в (которое обрабатываем)
 следующие - их координаты
 нужно найти наибольшую площадь наибольшего кол-ва пересечения
 прям-гов и координаты этого пересечения- которое в свою очередь тоже
 прям-к(могут ведь и не пересекаться)

 к примеру 3 прям-ка А,Б и В:
 А пересекается с Б, а Б с В причем А и В не пересекаются
 из этих пересечений нужно найти наибольшую площадь(и коорд-ты
 естественно) площадь которая меньше нужно отбросить и освободить
 занимаемую ею память

 или так 4 прям. А,Б,В,Г
 первые 3 пересекаются друг с другом а последний только с
 каким-нибудь одним тогда берется пересечение с наибольшим кол-вом
 прям-ков (первых 3-х)

 если площади равны то так и выдать - что они равны...

 (считаем что все прям-ки расположены вертикально (или гориз-но - без
 разницы))

 а это я консультировался...
 ===================
 "....Так вот, если я не ошибаюсь, от вас требовалось написать класс
ПРЯМОУГОЛЬНИК. Одно из действий, которое этот класс должен уметь делать
- перемножать (пересекать) прямоугольники.
       Rectangle operator * (const Rectangle & rect ) const {
               Rectangle res=*this;
           return res+=rect;
       }
       Rectangle & operator *=(const Rectangle & rect );

После реализации данного метода вы можете писать примерно так:
       Rectangle R = Recs[0];
       for( int i=1; i<RecCount; i++ )
               R *= Rects[i];

В конце получится пересечение всех прямоугольников, возможно пустое. Как
задавать пустой прямоугольник - ваше дело.
..."
===============

и если можно с комментариями что зачем и почему....

 P.S: ничего себе раскатал...? :-)
 P.P.S. Программка нужна не мне... знакомый попросил... Кто может - помогите.... Живущим в Киеве - с меня пиво... ) Заранее благодарю....
  Вверх
Евгений
  Дата 17.1.2003, 18:59 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Люди!!!! Новое уточнение... желательно это до воскресения сделать... Очень прошу... !!!!!!!
  Вверх
bercut
Дата 18.1.2003, 01:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 15.8.2002
Где: Волжский

Репутация: нет
Всего: нет



Сколько заплатишь ? :colgate
PM MAIL WWW ICQ   Вверх
Евгений
Дата 18.1.2003, 01:52 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(bercut @ 17.1.2003, 17:47)
Сколько заплатишь ? :colgate

Хм... Даже так.. в пределах разумного...
  Вверх
Klin
Дата 18.1.2003, 02:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: нет
Всего: 25



Цитата
Хм... Даже так.. в пределах разумного...
В раделе"Работа" нужно было вопрос задать.


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Евгений
Дата 18.1.2003, 02:44 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











мдя... то - есть народ просто так даже не почешется? хм... я был лучшего мнения....
  Вверх
AntonSaburov
Дата 18.1.2003, 03:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



Не совсем понятно - надо найти прямоугольник, у которого наибольшее количество пересечений с другими. И если таких прямоугольников несколько, то надо найти тот, у которого сумма площадей пересечений с другими наибольшая ?
И к тому же вывести координаты полученных прямоугольников от пересечений ?

Объяснение крайне непонятное.
PM MAIL WWW ICQ   Вверх
Евгений
Дата 18.1.2003, 03:07 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Насколько я понимаю.. нужно взять количество и координаты прямоугольников из файла... все это расчитать.. и выдать ответ... ИМХО
  Вверх
Vit
Дата 18.1.2003, 03:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: нет
Всего: 207



Цитата(Guest @ 17.1.2003, 09:44)
мдя... то - есть народ просто так даже не почешется? хм... я был лучшего мнения....

Ну а Вы для кого-нибудь "почесались"? Например, приходит к Вам незнакомый человек и говорит - "слыш, чувак, напиши мне программу, на завтра!" и что Вы ему скажете? Скорее всего пошлёте куда подальше.

Модератор: На форуме много хороших профессионалов, которые помогут советом, НО РАБОТУ ДОЛЖНЫ ДЕЛАТЬ ВЫ, здесь лишь помогают. Если Вы хотите чтобы вам помогли то вопрос должен звучать примерно так: "Вот пример моего кода, но почему-то во второй строке выскакивает ошибка", или так "Как мне экстраполировать нелинейную трансгрессию?", а если вопрос задан в тоне "Напишите мне программу" - то это не сюда, это в раздел работы - определитесь с ценой, и может быть кто-то возьмётся Вам написать программу. Если хотите написать программу за бесплатно и надеетесь, на то что идея столь интересная, что найдутся энтузиасты, то тогда у нас есть раздел "Совместная разработка". Если же Вам непонятен алгоритм построения приложения - то это в раздел "Алгоритмы"


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Евгений
Дата 18.1.2003, 03:34 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Vit @ 17.1.2003, 19:24)
Цитата(Guest @ 17.1.2003, 09:44)
мдя... то - есть народ просто так даже не почешется? хм... я был лучшего мнения....

Ну а Вы для кого-нибудь "почесались"? Например, приходит к Вам незнакомый человек и говорит - "слыш, чувак, напиши мне программу, на завтра!" и что Вы ему скажете? Скорее всего пошлёте куда подальше.

[size=2][color=Blue]Модератор: На форуме много хороших профессионалов, которые помогут советом, НО РАБОТУ ДОЛЖНЫ ДЕЛАТЬ ВЫ, здесь лишь помогают.

Кстати... если ко мне обращается человек и просит сделать что - то, что я в силах (я не имею ввиду сайтик закриэйть для фирмы или еще что - то в этом роде... ), то я это сделаю.. если он мне после этого по СОБСТВЕННОЙ инициативе поставит бутылку пива - я буду рад...
А тут я именно прошу совета.. я просто не знаю С++.. но ко мне обратился знакомый с просьбой... Я прошу совета: "Как это сделать?"...
  Вверх
Евгений
Дата 18.1.2003, 03:57 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Насколько я понимаю, эта программка не столь сложная... Для профессионала это работы на 20 - 40 минут.. ИМХО...
  Вверх
Fantasist
Дата 19.1.2003, 05:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: 4
Всего: 41



Цитата
Насколько я понимаю, эта программка не столь сложная


Несложная. Но и не интересная. А потому тратить время не хочеться. Можете подождать, может какой энузиаст и возмется, для интереса, но проффессионалы вряд ли. Проффессионалы, как вам было замеченно выше, расскажут вам, что делать, что как я понял, уже и было сделанно.


--------------------
Волны гасят ветер...
PM MAIL   Вверх
HexoGenus
Дата 19.1.2003, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Экс. модератор
Сообщений: 110
Регистрация: 28.8.2002
Где: Ростов-на-Дону

Репутация: нет
Всего: нет



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

34,12,50,90
где P1(x1,y1) x1=34 y1=12 P2(x2,y2) x2=50 y2=90
P1 - левый нижний угол прямоугольника
P2 - правый верхний угол прямоугольника
(оси с левого нижнего угла)
Для чтения если тебе пока не нужно работать с огромными файлами попробуй использовать класс TStringList который позволяет работать с массивами строк String... потренируйся так...
попробуй создать Блокнотом C:\1.txt и в нем прописать несколько строчек текста
потом запусти такой код:
TStringList * tsLoFile=new TStringList();
tsLoFile->LoadFromFile("c:\\1.txt");
for (int i=0; i<tsLoFile->Count;i++)
{
String sCurent,sTemp;
sCurent=tsLoFile->Strings[i];
ShowMessage(sCurent);
for (int i=sCurent.Length();i>0;i--) sTemp=sTemp+sCurent[i];
tsLoFile->Strings[i]=sTemp;
ShowMessage(sTemp);
}
tsLoFile->SaveToFile("c:\\2.txt");
delete tsLoFile;

Так читать строки из файла и писать теперь ты знаешь как...

теперь как эти координаты из строки разложить по переменным
String a="22!33!A!B!",sX1,sY1,sX2,sY2;
String * s[4]={&sX1,&sY1,&sX2,&sY2};
int j=0;
for (int i=1; i<=a.Length(); i++) if (String(a[i])!="!") *s[j]=*s[j]+a[i]; else j++;

Это как разобраться со строкой с разделителями, а перевести в числовой формат обычная функция int x1=StrToInt(sX1);
координаты есть, теперь разберемся с пересечениями

координаты пересечения
py2=min(y2[1],y2[2])
py1=min(y1[1]-[y1[2])
px2=min(x2[1],x2[2])
px1=min(x1[1]-[x1[2])

стороны прямоугольника пересечения
a=min(y2[1],y2[2])-min(y1[1]-[y1[2])
b=min(x2[1],x2[2])-min(x1[1]-[x1[2])
if (a<0) a=0;
if (b<0) b=0;
s=a*b; //площадь
// нуждается в тестировании с разными значениями

Теперь реализация упирается не в программирование а чисто в логику и создание массивов...

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

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

............

И фишка как раз в том что задача ну ооочень простая, но по смыслу запутанная, в ней нет ничего интересного, но она требует достаточно времени (совсем не на программирование а на математику "теория множеств")... профессионалы как раз разменивать свое время на мелочи не любят им и так не хватает времени что бы отдохнуть... здесь они кстати совсем не отдыхают (хотя может им так и кажется) а занимаются самообразованием...
и кстати траз люди зашли в тему с таким названием значит им хотелось тебе помочь... но объем работы слишком велик...
на будущее разбивай задачу на логические части... (посмотри выше как это сделал я...) потому что целиком всю работу вряд ли кто станет делать а вот показать тебе как реализовать часть это запросто... и у тебя именно из желания тебе помочь спросили есть ли возможность оплатить работу потому что у тебя в этом случае есть возможность переложить работу в соответствующий раздел, и скорость ответов там будет намного выше... ну а писать программу полностью за просто так... это к преподавателю любого ВУЗа где изучают программирование с бутыльком, он это даст как лабу, а ее обязательно ему сделают студенты да еще и может к нам за советами и забегут :-)))
А капитану я считаю ты вообще нагрубил
Евгений : "Насколько я понимаю.. нужно взять количество и координаты прямоугольников из файла... все это расчитать.. и выдать ответ... ИМХО "
и тебе извиняться надо,
судя по его вопросу он думал в том же направлении что и я ... и если я ошибся то и он не зря переспросил...
а если я правильно решил задачу то и он тебе помог бы если бы ты его не отшил...
И вообще учитывая количество людей которые считают что раз программисты быстро набирают текст то можно к ним по этому поводу обращаться мы в вопросе организации работы очень ранимы...
--------------------
Когда невозможно уже работать напряженнее, начни работать умнее.
PM MAIL WWW ICQ   Вверх
HexoGenus
Дата 19.1.2003, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Экс. модератор
Сообщений: 110
Регистрация: 28.8.2002
Где: Ростов-на-Дону

Репутация: нет
Всего: нет



Fantasist отдельное спасибо за непрофессионала...
:-) :D
--------------------
Когда невозможно уже работать напряженнее, начни работать умнее.
PM MAIL WWW ICQ   Вверх
Евгений
Дата 22.1.2003, 00:36 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











HexoGenus
Моя искренняя благодарность...
2 All: Если я кого - то обидел... приношу свои искренние извинения... это было сделано неумышлено...
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1205 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.