Created
November 11, 2011 22:44
-
-
Save CvutFelStudentAccount/1359552 to your computer and use it in GitHub Desktop.
Square Intersection (C++)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #include <iostream> | |
| using namespace std; | |
| bool dotykajiSe(double delkaHranyPrvnihoCtverce, double delkaHranyDruhehoCtverce, double x1, double y1, double x2, double y2){ | |
| // DRUHEJ MOC NA SEVERU | |
| if( (y1+(delkaHranyPrvnihoCtverce/2))<(y2-(delkaHranyDruhehoCtverce/2)) ){ | |
| cout << "Ctverce se ani nedotykaji."<< endl; | |
| return false; | |
| } | |
| // DRUHEJ MOC NA JIHU | |
| else if( (y1-(delkaHranyPrvnihoCtverce/2))>(y2+(delkaHranyDruhehoCtverce/2)) ){ | |
| cout << "Ctverce se ani nedotykaji."<< endl; | |
| return false; | |
| } | |
| // DRUHEJ MOC NA VYCHODNE | |
| else if( (x1+(delkaHranyPrvnihoCtverce/2))<(x2-(delkaHranyDruhehoCtverce/2)) ){ | |
| cout << "Ctverce se ani nedotykaji."<< endl; | |
| return false; | |
| } | |
| // DRUHEJ MOC NA ZAPADNE | |
| else if( (x1-(delkaHranyPrvnihoCtverce/2))>(x2+(delkaHranyDruhehoCtverce/2)) ){ | |
| cout << "Ctverce se ani nedotykaji."<< endl; | |
| return false; | |
| } | |
| else{return true;} | |
| } | |
| double vypoctiObsahSjednoceni(double delkaHranyPrvnihoCtverce, double delkaHranyDruhehoCtverce, double x1, double y1, double x2, double y2){ | |
| double obsahSjednoceni; | |
| double delkaYstranyPruniku; | |
| double delkaXstranyPruniku; | |
| double obsahPruniku; | |
| // Druhej je vnorenej | |
| bool druhyJeVnorenVychodne = (x1+(delkaHranyPrvnihoCtverce/2))>(x2+(delkaHranyDruhehoCtverce/2)); | |
| bool druhyJeVnorenZapadne = (x1-(delkaHranyPrvnihoCtverce/2))<(x2-(delkaHranyDruhehoCtverce/2)); | |
| bool druhyJeVnorenSeverne = (y1+(delkaHranyPrvnihoCtverce/2))>(y2+(delkaHranyDruhehoCtverce/2)); | |
| bool druhyJeVnorenJizne = (y1-(delkaHranyPrvnihoCtverce/2))<(y2-(delkaHranyDruhehoCtverce/2)); | |
| if(druhyJeVnorenVychodne && druhyJeVnorenSeverne && druhyJeVnorenZapadne && druhyJeVnorenJizne){ | |
| obsahSjednoceni = (delkaHranyPrvnihoCtverce*delkaHranyPrvnihoCtverce); | |
| cout << "Obsah sjednoceni dvou ctvercu je "<< obsahSjednoceni << "."<< endl; | |
| return obsahSjednoceni; | |
| } | |
| // Prvni je vnorenej | |
| bool PrvniJeVnorenVychodne = (x2+(delkaHranyDruhehoCtverce/2))>(x1+(delkaHranyPrvnihoCtverce/2)); | |
| bool PrvniJeVnorenZapadne = (x2-(delkaHranyDruhehoCtverce/2))<(x1-(delkaHranyPrvnihoCtverce/2)); | |
| bool PrvniJeVnorenSeverne = (y2+(delkaHranyDruhehoCtverce/2))>(y1+(delkaHranyPrvnihoCtverce/2)); | |
| bool PrvniJeVnorenJizne = (y2-(delkaHranyDruhehoCtverce/2))<(y1-(delkaHranyPrvnihoCtverce/2)); | |
| if(PrvniJeVnorenVychodne && PrvniJeVnorenSeverne && PrvniJeVnorenZapadne && PrvniJeVnorenJizne){ | |
| obsahSjednoceni = (delkaHranyDruhehoCtverce*delkaHranyDruhehoCtverce); | |
| cout << "Obsah sjednoceni dvou ctvercu je "<< obsahSjednoceni << "."<< endl; | |
| return obsahSjednoceni; | |
| } | |
| // Samotny vypocet obsahu | |
| if(y2>y1){delkaYstranyPruniku = (y1+(delkaHranyPrvnihoCtverce/2))-(y2-(delkaHranyDruhehoCtverce/2));} | |
| if(y1>y2){delkaYstranyPruniku = (y2+(delkaHranyDruhehoCtverce/2))-(y1-(delkaHranyPrvnihoCtverce/2));} | |
| if(x2>x1){delkaXstranyPruniku = (x1+(delkaHranyPrvnihoCtverce/2))-(x2-(delkaHranyDruhehoCtverce/2));} | |
| if(x1>x2){delkaXstranyPruniku = (x2+(delkaHranyDruhehoCtverce/2))-(x1-(delkaHranyPrvnihoCtverce/2));} | |
| if(x1==x2){ | |
| if(delkaHranyPrvnihoCtverce>delkaHranyDruhehoCtverce){delkaXstranyPruniku=delkaHranyDruhehoCtverce;} | |
| else{delkaXstranyPruniku=delkaHranyPrvnihoCtverce;} | |
| } | |
| if(y1==y2){ | |
| if(delkaHranyPrvnihoCtverce>delkaHranyDruhehoCtverce){delkaYstranyPruniku=delkaHranyDruhehoCtverce;} | |
| else{delkaYstranyPruniku=delkaHranyPrvnihoCtverce;} | |
| } | |
| if(((x2-delkaHranyDruhehoCtverce/2)<(x1-delkaHranyPrvnihoCtverce/2))&&(x2+delkaHranyDruhehoCtverce/2)>(x1+delkaHranyPrvnihoCtverce/2)){ | |
| delkaXstranyPruniku = delkaHranyPrvnihoCtverce; | |
| } | |
| if(((x2-delkaHranyDruhehoCtverce/2)>(x1-delkaHranyPrvnihoCtverce/2))&&(x2+delkaHranyDruhehoCtverce/2)<(x1+delkaHranyPrvnihoCtverce/2)){ | |
| delkaXstranyPruniku = delkaHranyDruhehoCtverce; | |
| } | |
| if(((y2-delkaHranyDruhehoCtverce/2)<(y1-delkaHranyPrvnihoCtverce/2))&&(y2+delkaHranyDruhehoCtverce/2)>(y1+delkaHranyPrvnihoCtverce/2)){ | |
| delkaYstranyPruniku = delkaHranyPrvnihoCtverce; | |
| } | |
| if(((y2-delkaHranyDruhehoCtverce/2)>(y1-delkaHranyPrvnihoCtverce/2))&&(y2+delkaHranyDruhehoCtverce/2)<(y1+delkaHranyPrvnihoCtverce/2)){ | |
| delkaYstranyPruniku = delkaHranyDruhehoCtverce; | |
| } | |
| obsahPruniku = delkaXstranyPruniku*delkaYstranyPruniku; | |
| obsahSjednoceni = obsahSjednoceni=((delkaHranyPrvnihoCtverce*delkaHranyPrvnihoCtverce)+(delkaHranyDruhehoCtverce*delkaHranyDruhehoCtverce)) - obsahPruniku; | |
| cout << "Obsah sjednoceni dvou ctvercu je "<< obsahSjednoceni << "."<< endl; | |
| return obsahSjednoceni; | |
| } | |
| int main(){ | |
| double delkaHranyPrvnihoCtverce; | |
| double delkaHranyDruhehoCtverce; | |
| double x1; | |
| double y1; | |
| double x2; | |
| double y2; | |
| cout << "Zadejte delku hrany prvniho ctverce: "; | |
| if(!(cin >> delkaHranyPrvnihoCtverce)) { | |
| cout << "Spatny vstup.\n"; | |
| return 0; | |
| } | |
| if(delkaHranyPrvnihoCtverce<0){ | |
| cout << "Spatny vstup." << endl; | |
| return 0; | |
| } | |
| cout << "Zadejte x-ovou souradnici stredu prvniho ctverce: "; | |
| if(!(cin >> x1)) { | |
| cout << "Spatny vstup.\n"; | |
| return 0; | |
| } | |
| cout << "Zadejte y-ovou souradnici stredu prvniho ctverce: "; | |
| if(!(cin >> y1)) { | |
| cout << "Spatny vstup.\n"; | |
| return 0; | |
| } | |
| cout << "Zadejte delku hrany druheho ctverce: "; | |
| if(!(cin >> delkaHranyDruhehoCtverce)) { | |
| cout << "Spatny vstup.\n"; | |
| return 0; | |
| } | |
| if(delkaHranyDruhehoCtverce<0){ | |
| cout << "Spatny vstup." << endl; | |
| return 0; | |
| } | |
| cout << "Zadejte x-ovou souradnici stredu druheho ctverce: "; | |
| if(!(cin >> x2)) { | |
| cout << "Spatny vstup.\n"; | |
| return 0; | |
| } | |
| cout << "Zadejte y-ovou souradnici stredu druheho ctverce: "; | |
| if(!(cin >> y2)) { | |
| cout << "Spatny vstup.\n"; | |
| return 0; | |
| } | |
| if(!(dotykajiSe(delkaHranyPrvnihoCtverce, delkaHranyDruhehoCtverce, x1, y1, x2, y2))){ | |
| return 0; | |
| } | |
| vypoctiObsahSjednoceni(delkaHranyPrvnihoCtverce, delkaHranyDruhehoCtverce, x1, y1, x2, y2); | |
| return 0; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment