Форум программистов, компьютерный форум CyberForum.ru

Геометрическая программа - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
IIIa66uMEM6eP
заставил Бендера
 Аватар для IIIa66uMEM6eP
432 / 288 / 10
Регистрация: 05.12.2010
Сообщений: 1,642
Записей в блоге: 6
09.06.2011, 15:02     Геометрическая программа #1
С ООП не знаком, помогите решить.
На плоскости задано множество прямоугольников. Определить, имеется ли прямоугольник, содержащий внутри себя все оставшиеся прямоугольники.
Понятно что это можно сделать и без принципов ООП, но нужно бы был хотя бы один класс наследник.
Во вложении что то примерно такое.
Миниатюры
Геометрическая программа  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2011, 15:02     Геометрическая программа
Посмотрите здесь:

C++ геометрическая программа (С++)
Геометрическая прогрессия C++
геометрическая прогрессия C++
C++ Геометрическая прогрессия
C++ Геометрическая прогрессия C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IIIa66uMEM6eP
заставил Бендера
 Аватар для IIIa66uMEM6eP
432 / 288 / 10
Регистрация: 05.12.2010
Сообщений: 1,642
Записей в блоге: 6
09.06.2011, 16:39  [ТС]     Геометрическая программа #2
upd...
dihlofos
09.06.2011, 16:43
  #3

Не по теме:

Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
но нужно бы был хотя бы один класс наследник.
А что тут от чего наследовать-то? Синий прямоугольник от красного?

OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
09.06.2011, 16:48     Геометрическая программа #4
ну получай координаты каждого объекта и сравнивай.
хоть бы среду разработки написал
IIIa66uMEM6eP
заставил Бендера
 Аватар для IIIa66uMEM6eP
432 / 288 / 10
Регистрация: 05.12.2010
Сообщений: 1,642
Записей в блоге: 6
09.06.2011, 17:03  [ТС]     Геометрическая программа #5
OstapBender, среда, Borland, dev.. я в ООП - не могу ничего сделать.. по этому и хотя бы постаратся что то написать сейчас не могу - даже если вы посоветуете как это реализовать, хотя и за это большое спасибо

Добавлено через 1 минуту
dihlofos, незнаю класс прямоугольников - у них наследник синий прямоугольник... хз
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
09.06.2011, 17:22     Геометрическая программа #6
IIIa66uMEM6eP, я в Борланде работал ровно 0 раз, поэтому к сожалению не могу помочь ничем.

Создай объекты на форме и найди методы которые возвращают их координаты
примерно так это выглядело бы в Qt:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
bool isOk(QRect* o1, QRect *o2) {
return ((o1->bottomLeft() >= o2->bottomLeft()) && ... && (o1->topRight() <= o2->topRight());
}
 
QRect *tempRect = new QRect(); // класс геометрии
for (int i=0; i<10; i++) {
*tempRect=Square[i]->geometry(); // достаем данные об объекте
     for (int j=i; j<10; j++) {
           if (!isOk(tempRect,&(Square[j]->geometry()))) {
           // не Ок.
           break;
           }
      // тут вывести что Ок (все они в Square[i] ! ) .. мона сделать break на метку (1)
     }
 
}
(1)
IIIa66uMEM6eP
заставил Бендера
 Аватар для IIIa66uMEM6eP
432 / 288 / 10
Регистрация: 05.12.2010
Сообщений: 1,642
Записей в блоге: 6
09.06.2011, 18:03  [ТС]     Геометрическая программа #7
OstapBender, да хоть DEV, хоть Code Blooks..
Разбираюсь как это на форму сунуть))
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.06.2011, 22:51     Геометрическая программа #8
вот для deva должно подойти, правда тут нету

Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
Определить, имеется ли прямоугольник, содержащий внутри себя все оставшиеся прямоугольники.
4.rar
IIIa66uMEM6eP
заставил Бендера
 Аватар для IIIa66uMEM6eP
432 / 288 / 10
Регистрация: 05.12.2010
Сообщений: 1,642
Записей в блоге: 6
09.06.2011, 23:14  [ТС]     Геометрическая программа #9
Maxwe11, спс но не помогло(.. формы квадратов сам нарисовал, но как раз с координатами и как это работеат пока не разобрался
IIIa66uMEM6eP
заставил Бендера
 Аватар для IIIa66uMEM6eP
432 / 288 / 10
Регистрация: 05.12.2010
Сообщений: 1,642
Записей в блоге: 6
14.06.2011, 12:11  [ТС]     Геометрическая программа #10
Поразительно) часа два гуглил, серчил много методов для рисования - ни один ни могу интегрировать в среду разработки, что за руки такие)

Не подскажет ли кто нибудь как проще/лучше нарисовать эти прямоугольники в средах Borland C++ 6, wxDev C++, да даже код блокс с горем пополам..
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
14.06.2011, 14:00     Геометрическая программа #11
IIIa66uMEM6eP, тебе нужно нарисовать прямоугольник в билдере что ли? Воспользуйся свойством Canvas, например если на форме есть объект TImage:
C++
1
Image1->Canvas->Rectangle(x1,y1,x2,y2);
IIIa66uMEM6eP
заставил Бендера
 Аватар для IIIa66uMEM6eP
432 / 288 / 10
Регистрация: 05.12.2010
Сообщений: 1,642
Записей в блоге: 6
14.06.2011, 14:12  [ТС]     Геометрическая программа #12
dihlofos, бред блин..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
TForm1->Canvas->Rectangle(int x1=10,int y1=20,int x2 = 30,int y2 = 40);
}
//---------------------------------------------------------------------------
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
14.06.2011, 17:27     Геометрическая программа #13
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
бред блин
я согласен.

Во-первых, TForm - это тип, а объект - Form1.
Во-вторых, переменные нельзя определять в вызове метода.
В-третьих, лучше написать это в обработчике события OnPaint, т.е при перерисовке формы.

C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::FormPaint(TObject *Sender)
{
        int x1 = 10;
        int y1 = 10;
        int x2 = 50;
        int y2 = 50;
        Form1->Canvas->Rectangle(x1,y1,x2,y2);
}
x1, y1 - координаты верхней левой точки, x2, y2 - нижней правой (у вас я так полагаю, они будут членами отдельного класса, описывающего ваш прямоугольник).
IIIa66uMEM6eP
заставил Бендера
 Аватар для IIIa66uMEM6eP
432 / 288 / 10
Регистрация: 05.12.2010
Сообщений: 1,642
Записей в блоге: 6
14.06.2011, 17:33  [ТС]     Геометрическая программа #14
Цитата Сообщение от dihlofos Посмотреть сообщение
обработчике события OnPaint, т.е при перерисовке формы.
вот тут не понятно, предыдущие советы усвоены.

Добавлено через 35 секунд
куда мне вставлять эту конструкцию что б нарисовать прямоугольник?
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
14.06.2011, 17:51     Геометрическая программа #15
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
вот тут не понятно
Фишка вобщем в том, что отрисовку бессмысленно пихать в OnCreate. Оно вызывается при создании формы, т.е. когда он ещё не нарисована. И только потом будет вызвано OnPaint. Вот, кстати, можешь почитать порядок вызова, правда там речь про делфи, но суть не меняется.

А вообще OnPaint вызывается тогда, когда, компонент нужно перересовать, например после того, как окошко было перкрыто другими окнами.

Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
куда мне вставлять эту конструкцию что б нарисовать прямоугольник?
В панели ObjectInspector ищешь событие OnPaint (в закладке events) для формы. Двойным кликом будет создана соответствующая функция, в тело которой и вписываешь то, что тебе надо.
IIIa66uMEM6eP
заставил Бендера
 Аватар для IIIa66uMEM6eP
432 / 288 / 10
Регистрация: 05.12.2010
Сообщений: 1,642
Записей в блоге: 6
14.06.2011, 18:04  [ТС]     Геометрическая программа #16
dihlofos, а если при клике двойном на OnPaint не создается форма...
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
14.06.2011, 18:14     Геометрическая программа #17
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
а если при клике двойном на OnPaint не создается форма...
Какая такая форма? Форма же уже у тебя есть. Теперь тебе надо создать обработчик события OnPaint. Клик туда, где стрелка, после этого можешь писать код (справа).
Миниатюры
Геометрическая программа  
IIIa66uMEM6eP
заставил Бендера
 Аватар для IIIa66uMEM6eP
432 / 288 / 10
Регистрация: 05.12.2010
Сообщений: 1,642
Записей в блоге: 6
14.06.2011, 18:35  [ТС]     Геометрическая программа #18
спасибо, получилось.. придумать бы еще как сделать что бы узнать есть ли такой прямоугольник который содержит в себе все остальные
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
15.06.2011, 10:10     Геометрическая программа #19
Ну так сравнивай координаты прямоугольников. Например, если есть два прямоугольника - один с координатами x1, y1, x2, y2, другой - a1, b1, a2, b2. Из рисунка видно, что если (x1 < a1 и y1 < b1) и (x2 > a2 и y2 > b2), то второй прямоугольник размещается в первом. Если сравнивать в цикле поочерёдно координаты всех прямоугольников, можно найти тот, который включает в себя все остальные.
Миниатюры
Геометрическая программа  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2011, 10:37     Геометрическая программа
Еще ссылки по теме:

Геометрическая фигура C++
C++ Программа на Си. Геометрическая
C++ Геометрическая фигура

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
IIIa66uMEM6eP
заставил Бендера
 Аватар для IIIa66uMEM6eP
432 / 288 / 10
Регистрация: 05.12.2010
Сообщений: 1,642
Записей в блоге: 6
15.06.2011, 10:37  [ТС]     Геометрическая программа #20
dihlofos, ладно - в каком поле это можно посчитать? Имею введу где сравнивать, не в FormPaint?

Добавлено через 20 минут
dihlofos, помогите решить, если вам не трудно(( я почти сдаюсь.
Yandex
Объявления
15.06.2011, 10:37     Геометрическая программа
Ответ Создать тему
Опции темы

Текущее время: 12:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru