С ++.Где ошибка в коде? Если прямоугольники пересекаются, то программа ничего не выдает. - Компьютерные вопросы
  • Чаты 4chT.com в телеграмм
    Наши группы в телеграмм

Вопрос С ++.Где ошибка в коде? Если прямоугольники пересекаются, то программа ничего не выдает.

Регистрация
29 Дек 2013
Сообщения
76
Репутация
0
Спасибо
0
Монет
0
Два прямоугольника, расположенные в первом квадранте задаются координатами левого верхнего и правого нижнего угла. Найти их площадь пересечения.
#include // подключение библиотеки ввода-вывода
#include // подключение библиотеки функций работы с консолью
#include

using namespace std;

int main()
{
setlocale (LC_ALL,"Russian");
double x1, x2, x3, x4, y1, y2;
double s;
cout << "Введите абциссы вертикальных сторон первого прямоугольника x2>x1>=0 ";
cin >> x1>>x2;
cout << "Ордината верхней стороны y1>0 y1=";
cin >> y1;
cout << "Введите абциссы вертикальных сторон второго прямоугольника x4>xx>=0 ";
cin >> x3>>x4;
cout << "Ордината верхней стороны y2>0 y2= ";
cin >> y2;
if ((x3>=x2) || (x4<=x1))
cout << "Прямоугольники не пересекаются! ";
else
{
if (y1>=y2)
{
if ((x3>=x1) && (x4<=x2))
s = (x4-x3) * y2;
else if ((x3>=x1) && (x4>=x2))
s = (x2-x3) * y2;
else if((x3<=x1) && (x4>=x2))
s = (x2-x1) * y2;
else if ((x3<=x1) && (x4<=x2))
s = (x4-x1) * y2;
else
{
if ((x3>=x1) &&
(x4<=x2))
s = (x4-x3) * y1;
else if ((x3>=x1) && (x4>=x2))
s = (x2-x3)*y1;
else if ((x3<=x1) && (x4>=x2))
s = (x2-x1)*y1;
else if((x3<=x1) && (x4<=x2))
s = (x4-x1)*y1;

}
cout << "Прямоугольники пересекаются, площадь пересечения=,s:0:2)";
}

}
_getch();
return 0;
}
 
Регистрация
11 Дек 2013
Сообщения
90
Репутация
0
Спасибо
0
Монет
0
Код на pastebin или ideone, тут отступы убились, код нечитаемый. Проблема, видимо, что где-то не так if-else построен, но ломать глаза неинтересно. Почему только две координаты y? У каждого прямоугольника должно быть по 2 - итого 4. s ты не выводишь. И уточни, на каких именно данных программа не работает (на ideone это совсем просто).
 
Сверху Снизу