藍橋杯 矩形運算(求相交部分)

2021-06-29 14:37:18 字數 1367 閱讀 3313

在編寫圖形介面軟體的時候,經常會遇到處理兩個矩形的關係。

如圖【1.jpg】所示,矩形的交集指的是:兩個矩形重疊區的矩形,當然也可能不存在(參看【2.jpg】)。兩個矩形的並集指的是:能包含這兩個矩形的最小矩形,它一定是存在的。

本題目的要求就是:由使用者輸入兩個矩形的座標,程式輸出它們的交集和並集矩形。

矩形座標的輸入格式是輸入兩個對角點座標,注意,不保證是哪個對角,也不保證順序(你可以體會一下,在桌面上拖動滑鼠拉矩形,4個方向都可以的)。

輸入資料格式:

x1,y1,x2,y2

x1,y1,x2,y2

資料共兩行,每行表示乙個矩形。每行是兩個點的座標。x座標在左,y座標在右。座標系統是:螢幕左上角為(0,0),x座標水平向右增大;y座標垂直向下增大。

要求程式輸出格式:

x1,y1,長度,高度

x1,y1,長度,高度

也是兩行資料,分別表示交集和並集。如果交集不存在,則輸出「不存在」

前邊兩項是左上角的座標。後邊是矩形的長度和高度。

例如,使用者輸入:

100,220,300,100    

150,150,300,300

則程式輸出:

150,150,150,70

100,100,200,200    

例如,使用者輸入:

10,10,20,20

30,30,40,40

則程式輸出:

不存在10,10,30,30

注意:請仔細除錯!您的程式只有能執行出正確結果的時候才有機會得分!

在評卷時使用的輸入資料與試卷中給出的例項資料可能是不同的。

重在調整開始時候的位置,之後只要分成兩種情況就好了,也就是相離和相交,剩下的很簡單了。。。

#include #include#include using namespace std;

int main ()

if(y1>y2)

if(xx1>xx2)

if(yy1>yy2)

//第乙個矩形在左,第二個矩形在右面

if(x1>xx1)

if( (xx1>=x2)||yy1>=y2 ||y1>yy2 ){//相離

int tx1=xx1x2?xx2:x2,ty1=y1yy2?y2:yy2;

coutyy2?y2:yy2),l=tx2-tx1,w=ty2-ty1;

cout<

藍橋杯 矩形面積交

問題描述 平面上有兩個矩形,它們的邊平行於直角座標系的x軸或y軸。對於每個矩形,我們給出它的一對相對頂點的座標,請你程式設計算出兩個矩形的交的面積。輸入格式 輸入僅包含兩行,每行描述乙個矩形。在每行中,給出矩形的一對相對頂點的座標,每個點的座標都用兩個絕對值不超過10 7的實數表示。輸出格式 輸出僅...

藍橋杯 基礎 矩形面積交

題目 基礎練習 矩形面積交 時間限制 1.0s 記憶體限制 512.0mb 問題描述 平面上有兩個矩形,它們的邊平行於直角座標系的x軸或y軸。對於每個矩形,我們給出它的一對相對頂點的座標,請你程式設計算出兩個矩形的交的面積。輸入格式 輸入僅包含兩行,每行描述乙個矩形。在每行中,給出矩形的一對相對頂點...

藍橋杯 加法運算

問題描述 你的表妹正在學習整數的加法,請編寫乙個程式來幫助她學習。該程式呼叫了乙個函式gettwoints,由它來返回兩個從鍵盤讀入的100以內的整數,然後計算這兩個整數之和,並把答案顯示出來。要求 在主函式中不能使用scanf等函式直接輸入這兩個整數,而必須通過呼叫gettwoints函式來完成,...