Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
IIIa66uMEM6eP
заставил Бендера
436 / 292 / 10
Регистрация: 05.12.2010
Сообщений: 1,648
Записей в блоге: 6
#1

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

09.06.2011, 15:02. Просмотров 1476. Ответов 29
Метки нет (Все метки)

С ООП не знаком, помогите решить.
На плоскости задано множество прямоугольников. Определить, имеется ли прямоугольник, содержащий внутри себя все оставшиеся прямоугольники.
Понятно что это можно сделать и без принципов ООП, но нужно бы был хотя бы один класс наследник.
Во вложении что то примерно такое.
0
Миниатюры
Геометрическая программа  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2011, 15:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Геометрическая программа (C++):

Программа на Си. Геометрическая - C++
Подсчитать количество равносторонних треугольников с различными длинами оснований и вершинами в заданном множестве точек на плоскости. ...

геометрическая программа (С++) - C++
Добрый день ув. форумчане от студентов первого курса. Недавно преподаватель дал задание по программированию, но его толком никто не понял,...

Геометрическая прогрессия - C++
Задача: Дано N десятоков целых чисел. Определить, сколько из них могут составлять геометрическую прогрессию. Проверку оформить в виде...

Геометрическая прогрессия - C++
Геометрическая прогрессия У вас есть действительное число и натуральное число n. Вычислить 1 +a + a2 +...+ без использования формулы...

Геометрическая фигура - C++
Как , если дано уравнение двумя переменными, изобразить фигуру? Напишите код плиз, для уравнения y+x<3(|y|+x^2) Добавлено через 45...

Геометрическая фигура - C++
Постановка задачи. Разработать программу, которая выводит на экран геометрическую фигуру, заполняя ее символом ‘*’ или пробелом. Размер...

29
IIIa66uMEM6eP
заставил Бендера
436 / 292 / 10
Регистрация: 05.12.2010
Сообщений: 1,648
Записей в блоге: 6
09.06.2011, 16:39  [ТС] #2
upd...
0
dihlofos
09.06.2011, 16:43
  #3

Не по теме:

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

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

Добавлено через 1 минуту
dihlofos, незнаю класс прямоугольников - у них наследник синий прямоугольник... хз
0
OstapBender
584 / 523 / 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)
1
IIIa66uMEM6eP
заставил Бендера
436 / 292 / 10
Регистрация: 05.12.2010
Сообщений: 1,648
Записей в блоге: 6
09.06.2011, 18:03  [ТС] #7
OstapBender, да хоть DEV, хоть Code Blooks..
Разбираюсь как это на форму сунуть))
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.06.2011, 22:51 #8
вот для deva должно подойти, правда тут нету

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

Не подскажет ли кто нибудь как проще/лучше нарисовать эти прямоугольники в средах Borland C++ 6, wxDev C++, да даже код блокс с горем пополам..
0
dihlofos
Бродяга
303 / 257 / 17
Регистрация: 27.08.2010
Сообщений: 553
14.06.2011, 14:00 #11
IIIa66uMEM6eP, тебе нужно нарисовать прямоугольник в билдере что ли? Воспользуйся свойством Canvas, например если на форме есть объект TImage:
C++
1
Image1->Canvas->Rectangle(x1,y1,x2,y2);
0
IIIa66uMEM6eP
заставил Бендера
436 / 292 / 10
Регистрация: 05.12.2010
Сообщений: 1,648
Записей в блоге: 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);
}
//---------------------------------------------------------------------------
0
dihlofos
Бродяга
303 / 257 / 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 - нижней правой (у вас я так полагаю, они будут членами отдельного класса, описывающего ваш прямоугольник).
1
IIIa66uMEM6eP
заставил Бендера
436 / 292 / 10
Регистрация: 05.12.2010
Сообщений: 1,648
Записей в блоге: 6
14.06.2011, 17:33  [ТС] #14
Цитата Сообщение от dihlofos Посмотреть сообщение
обработчике события OnPaint, т.е при перерисовке формы.
вот тут не понятно, предыдущие советы усвоены.

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

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

Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
куда мне вставлять эту конструкцию что б нарисовать прямоугольник?
В панели ObjectInspector ищешь событие OnPaint (в закладке events) для формы. Двойным кликом будет создана соответствующая функция, в тело которой и вписываешь то, что тебе надо.
1
14.06.2011, 17:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2011, 17:51
Привет! Вот еще темы с ответами:

Геометрическая задача - C++
Дан квадрат (длина стороны и координаты левого верхнего угла) и треугольник (координаты вершин). Определить, находится ли треугольник...

геометрическая прогрессия - C++
Составить программу, которая считает члены геометрической прогрессии (N), начальный элемент 2 а квоциент 0,2! Показывает 4 знака после...

Геометрическая прогресия - C++
Составить программу, печатающую TRUE, если указанное высказывание является истинным, и FALSE в противном случае. Цифры данного...

Геометрическая фигура круг - C++
Здравствуйте, столкнулся с такой проблемой, задание такое, дан круг и точка, выявить, лежит ли точка в круге, на окружности, или вообще...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.