Considerăm un sistemul cartezian de coordonate xOy
astfel:
- colțul stânga-sus are coordonata
(0, 0)
- axa
Ox
începe din stânga și continuă crescător spre dreapta - axa
Oy
începe de sus și continuă crescător în jos
În imaginea de mai jos sunt afișate coordonatele unui punct în sistemul cartezian folosit:
În acest sistem de coordonate, un dreptunghi cu laturile paralele cu axele poate fi descris prin patru numere, reprezentând:
x
– coordonata X a punctului din stânga – susy
– coordonata Y a punctului din stânga – susl
– lățimea dreptunghiuluii
– înălțimea dreptunghiului,
Cerința
Să se scrie definiția funcției C++ poz
care, primind 8 argumente, x1, y1, l1, i1, x2, y2, l2, i2
, în această ordine:
x1
,y1
,l1
,i1
– reprezentând primul dreptunghi,x2
,y2
,l2
,i2
– reprezentând cel de-al doilea dreptunghi,
returnează:
0
, dacă primul dreptunghi este în interiorul celuilalt sau invers1
, dacă cele două dreptunghiuri sunt identice2
, dacă cele două dreptunghiuri nu au nici un punct comun3
, dacă cele două dreptunghiuri se suprapun doar parțial
Restricții și precizări
- specificațiile unui dreptunghi sunt numere naturale cu cel mult 4 cifre fiecare
- soluția va conține funcția cerută. Prezența în soluție a altor instrucțiuni poate duce la erori de compilare și depunctarea soluției
Exemple
poz(100, 100, 300, 200, 150, 150, 100, 130)
returnează0
poz(100, 100, 100, 200, 100, 100, 100, 200)
returnează1
poz(50, 50, 100, 50, 200, 100, 100, 130)
returnează2
poz(50, 50, 100, 50, 30, 40, 100, 130)
returnează3
În animația de mai jos puteți modifica valorile ce caracterizează dreptunghiurile apăsând pe caseta gri corespunzătoare, rămânând cu mouse-ul în casetă cât timp scrieți, iar apoi puteți muta mouse-ul din casetă sau să apăsați ENTER sau să apăsați SPACE pentru a termina.
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema Poz :
int poz(int x1, int y1, int l1, int i1, int x2, int y2, int l2, int i2)
{
int rez = -1;
if( x1>x2 && y1>y2 && y1+i1<y2+i2 && x1+l1<x2+l2) rez = 0; // a in interiorul lui b
else if(x1<x2 && y1<y2 && y1+i1>y2+i2 && x1+l1>x2+l2) rez = 0; // b in interiorul lui a
else if(x1==x2 && y1==y2 && i1==i2 && l1==l2) rez = 1; // egale
// verificam daca b e sus, jos, stanga, dreapta fata de a si nu se suprapun deloc
else if(y2+i2<y1) rez = 2; // sus
else if(y1+i1<y2) rez = 2; // jos
else if(x1+l1<x2) rez = 2; // stanga
else if(x2+l2<x1) rez = 2; // dreapta
// altfel, sunt diferite
else rez = 3;
return rez;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #2552 Poz
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2552 Poz de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!