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

Косяк при проверке пересечения прямоугольников - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создать класс “Магазин” http://www.cyberforum.ru/cpp-beginners/thread289961.html
Создать класс “Магазин”, состоящей из класса ”Касса”. Класс “Магазин ”:название магазина, фамилия директора, колич. кассовых аппаратов. Класс “Касса”: фамилия кассира, выручка за день . •Найти магазин, в котором наибольшая выручка.
C++ Способ инициализации полей класса Добрый день! Есть класс class Date { public: Date(int y = FIRST_YEAR, int m = 1, int d = 1); ~Date(); const Date& operator+=(const Date&); int operator-(const Date&); http://www.cyberforum.ru/cpp-beginners/thread289948.html
Нахождение элементов треугольника C++
Доброго всем времени суток, я к сожалению не силен в программировании но нужно решить данную задачу В треугольнике задано две стороны a,b b и угол между ними C. Найти и вывести все элементы треугольника(высоты, углы, стороны), а также периметр и площадь. Буду очень благодарен за решение данной задачи.
"Число E" - не принимает решение C++
Ссылка на задачу: http://********/?main=task&id_task=46 Вот как я сделал: #include <iostream> #include <fstream> using namespace std; int main() { int namber = {2,7,1,8,2,8,1,8,2,8,4,5,9,0,4,5,2,3,5,3,6,0,2,8,7,5};
C++ Номерация строк http://www.cyberforum.ru/cpp-beginners/thread289934.html
как сделать что бы так, где на рисунке обведенно красным были номере строк кода а то не удобно искать ошибки
C++ Определить фирму, товар которой поступал чаще всего помогите рншить пожалуйста задачу: задание в атаче. спасибо подробнее

Показать сообщение отдельно
Veyron
 Аватар для Veyron
104 / 104 / 4
Регистрация: 02.06.2009
Сообщений: 579
06.05.2011, 17:51     Косяк при проверке пересечения прямоугольников
C++
1
2
3
4
5
6
7
8
9
struct point {int x; int y;};
struct rect{point a; point b;};
 
bool rectCross(rect p, rect q)
{
    bool onX=(p.a.x >=q.a.x && p.a.x <=q.b.x) || (p.b.x >=q.a.x && p.b.x <=q.b.x);
    bool onY=(p.a.y >=q.a.y && p.a.y <=q.b.y) || (p.b.y >=q.a.y && p.b.y <=q.b.y);
    return onX && onY;
}
Это функция, определяющая - пересекаются ли прямоугольники или нет. Истина - пересекаются, ложь - нет. Что-то мне подсказывает, что здесь не все корректно. Можете подсказать такие прямоугольники, на которых код загнется? Спасибо.

ЗЫ: по поводу структур - структура point думаю, ясна. Структура rect - прямоугольник, точки a и b - координаты левого нижнего угла и правого верхнего. Насчет того, что эти вершины не всегда могут быть левой нижней и правой верхней, написал такую функцию:
C++
1
2
3
4
5
6
7
rect correct(rect a)
{
    rect f;
    f.a.x=min(a.a.x, a.b.x); f.a.y=min(a.a.y, a.b.y);
    f.b.x=max(a.a.x, a.b.x); f.b.y=max(a.a.y, a.b.y);
    return f;
}
Может быть в ней ошибка?

Добавлено через 2 часа 46 минут
Вопрос снят. Код корректен, но при условии, что при сравнении прямоугольников прямоугольник p по оси oX лежит левее другого прямоугольника.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru