Hej, mam do zrobienia takie zadanie.
Wiersze szachownicy ponumerowane są od dołu ku górze, od 1 do n, zas kolumny – ́ od lewej do prawej: od 1 do m. Zatem kazde pole na planszy ma dobrze określone współrzędne (x, y), gdzie x oznacza numer kolumny, zas ́ y – numer wiersza. Pola na szachownicy pokolorowane są na czarno/biało. Pole (1,1) jest zamalowane na biało.
Na takiej szachownicy można określić położenie ̇prostokąta (a, b, c, d) – jego lewy dolny róg ma współrzędne: (a, b), zaś prawy górny: (c, d). Najpierw rozlała si ̨e biała farba i pokryła dokładnie prostokąt (x1, y1, x2, y2), następnie wylała si ̨e farba czarna jednolicie na prostokąt (x3, y3, x4, y4). Jesli obydwa prostokąty ́
miały część wspólną, to w wyniku tego zajścia będzie ona miała kolor czarny.
Na wejściu dostajemy wymiary całej planszy oraz najpierw współrzędne rogów prostokąta białego a następnie współrzędne prostokąta czarnego.
Należy wypisać ile ostatecznie będzie pól koloru białego a ile będzie pól koloru czarnego.
Napisałem część kodu która oblicza ile jest pól białych a ile czarnych na początku oraz ile jest pól białych a ile czarnych po wylaniu białej farby. Mam problem z wyznaczeniem części wspólnej tych prostokątów. Wklejam swój kod, jeśli byłyby jakieś pytania co do treści to piszcie bo starałem się skrócić bo zadanie opisane przez autorów ma z 2 strony.
#include <cstdio>
#include <iostream>
using namespace std;
int k,w; //kolumny wiersze
int b,c; //ilość pól białych na początku
int kb,wb,kb2, wb2; //kolumny biale, wiersze białe
int kc,wc,kc2,wc2; //kolumny czarne, wiersze czarne
int ilePolBialych(int x, int y, int czyBiale) //czy białe mówi o tym czy prostokąt zaczyna się od koloru białego
{
int z;
if(x%2!=0 and y%2!=0)
{
z=(x*y+czyBiale)/2;
return z;
}else
{
z=x*y/2;
return z;
}
}
int ilePolCzarnych(int x, int y, int czyBiale){
return x*y-ilePolBialych( x, y, czyBiale);
}
int i;
int main()
{
b=0;
c=0;
//cin>>k>>w;
k=8;w=8;
b=ilePolBialych(k, w,1);
c=(k*w)-b;
cout<<b<<endl<<c<<endl;
//cin>>kb>>wb>>kb2>>wb2;
kb=1;
wb=1;
kb2=3;
wb2=3;
i=ilePolCzarnych(kb2-kb+1,wb2-wb+1,(kb+wb+1)%2);
b=b+i;
c=c-i;
cout<<b<<endl<<c;
return 0;}
Pozdrawiam i z góry dzięki za pomoc