BLAGAM DAJE NAJ NA JUTRO!!!! Napisz program, który mając dane współrzędne dwóch prostokątów, których boki są równoległe do osi współrzędnych, policzy pole części wspólnej tych prostokątów. Wejście W pierwszym wierszu wejścia znajdują się 4 liczby całkowite: , oznaczające odpowiednio współrzędną - ową i - ową lewego górnego rogu i współrzędną - ową i - ową prawego dolnego rogu pierwszego prostokąta.
W drugim wierszu wejścia znajdują się 4 liczby całkowite: , oznaczające odpowiednio współrzędną - ową i - ową lewego górnego rogu i współrzędną - ową i - ową prawego dolnego rogu drugiego prostokąta.
Wszystkie współrzędne są nie mniejsze niż i nie większe niż .
Wyjście Pierwszym i jedyny wiersz wyjścia powinien zawierać jedną liczę całkowitą równą wartości pola części wspólnej dwóch prostokątów.
// Wczytanie współrzędnych lewego górnego i prawego dolnego rogu pierwszego prostokąta
int x1, y1, x2, y2;
cin >> x1 >> y1 >> x2 >> y2;
// Wczytanie współrzędnych lewego górnego i prawego dolnego rogu drugiego prostokąta
int x3, y3, x4, y4;
cin >> x3 >> y3 >> x4 >> y4;
// Obliczenie współrzędnych lewego górnego i prawego dolnego rogu części wspólnej prostokątów
int x5 = max(x1, x3);
int y5 = min(y1, y3);
int x6 = min(x2, x4);
int y6 = max(y2, y4);
// Obliczenie pola części wspólnej prostokątów
int pole = (x6 - x5) * (y5 - y6);
// Jeżeli pole jest ujemne, to prostokąty nie mają wspólnej części
if (pole < 0) {
pole = 0;
}
// Wyświetlenie pola części wspólnej prostokątów
cout << pole << endl;
return 0;
}
Wyjaśnienie:
Poniższy program zakłada, że współrzędne prostokątów są podane w taki sposób, że lewy górny róg pierwszego prostokąta ma mniejsze współrzędne niż prawy dolny róg tego prostokąta, a lewy górny róg drugiego prostokąta ma mniejsze współrzędne niż prawy dolny róg tego prostokąta.
Odpowiedź:
#include <iostream>
using namespace std;
int main() {
// Wczytanie współrzędnych lewego górnego i prawego dolnego rogu pierwszego prostokąta
int x1, y1, x2, y2;
cin >> x1 >> y1 >> x2 >> y2;
// Wczytanie współrzędnych lewego górnego i prawego dolnego rogu drugiego prostokąta
int x3, y3, x4, y4;
cin >> x3 >> y3 >> x4 >> y4;
// Obliczenie współrzędnych lewego górnego i prawego dolnego rogu części wspólnej prostokątów
int x5 = max(x1, x3);
int y5 = min(y1, y3);
int x6 = min(x2, x4);
int y6 = max(y2, y4);
// Obliczenie pola części wspólnej prostokątów
int pole = (x6 - x5) * (y5 - y6);
// Jeżeli pole jest ujemne, to prostokąty nie mają wspólnej części
if (pole < 0) {
pole = 0;
}
// Wyświetlenie pola części wspólnej prostokątów
cout << pole << endl;
return 0;
}
Wyjaśnienie:
Poniższy program zakłada, że współrzędne prostokątów są podane w taki sposób, że lewy górny róg pierwszego prostokąta ma mniejsze współrzędne niż prawy dolny róg tego prostokąta, a lewy górny róg drugiego prostokąta ma mniejsze współrzędne niż prawy dolny róg tego prostokąta.