kepsnius +19
Labas vakaras, prašau gal galite man pagelbėti. Užduotis skamba taip:
Sukurti algoritmą, kuris nustatytų ar 2 keturkampiai kertasi tarpusavyje.
Iš klaviatūros įvedamos dviejų keturkampių viršūnių koordinates. Parašyti algoritmą, kuris nustato ar šie keturkampiai tarpusavyje kertasi. Pavyzdžiui, pirmojo keturkampio viršūnės: A (x1, y1), B (x2, y2), C (x3, y3), D (x4, y4) ir antrojo keturkampio viršūnės: E (x5, y5), F (x6, y6), G (x7, y7), H (x8, y8). Rezultatą išvesti į ekraną arba tekstinį dokumentą.
.
//---------------------
parašiau kodą man atrodo turėtu veikti bet kažkodėl neaptinka. Gal galit padėti ? pasakyti kas blogai arba pataisyti ir paaiškinti kurioje vietoje padariau klaidų? ačiū iš karto #include<bits/stdc++.h>
struct kordinates
{
int x, y;
};
// Bool funkcija grazins true jei staciakampiai kirsis
bool arkertasi(kordinates pirma1, kordinates antra1, kordinates trecia1, kordinates ketvirta1, kordinates pirma2, kordinates antra2, kordinates trecia2, kordinates ketvirta2)
{
// tikrinu staciakampio virsunes
if (pirma1.x < antra2.x || pirma2.x < antra1.x || trecia1.x < ketvirta2.x || trecia2.x < ketvirta1.x || pirma1.x < ketvirta2.x || antra1.x < ketvirta2.x || antra1.x < ketvirta2.x)
return false;
// tikrinu y
if (pirma1.y > antra2.y || pirma2.y > antra1.y || trecia1.y > ketvirta2.y || trecia2.y > ketvirta1.y)
return false;
return true;
}
int main()
{
// pirmo keturkampio kordinates
kordinates pirma1 = {1, 1};
kordinates antra1 = {1, 8};
kordinates trecia1 = {5, 5};
kordinates ketvirta1 = {5, 1};
//--------------------------
// antro keturkampio kordinates
kordinates pirma2 = {4, 3};
kordinates antra2 = {6, 6};
kordinates trecia2 = {10, 6};
kordinates ketvirta2 = {10, 2};
//--------------------------
if (arkertasi(pirma1, antra1, trecia1, ketvirta1, pirma2, antra2, trecia2, ketvirta2))
printf("Sie keturkampiai tarpusavyje kertasi");
else
printf("Sie keturkampiai tarpusavyje nesikerta");
return 0;
}