Distanța dintre două puncte în C++
Dându-se două puncte, să se determine distanța dintre acestea (reprezentat printr-un număr real).
Exemplu. Pentru punctele (3, 4)
și (4, 5)
, distanța este 1.4142…
(radical din 2
).
Explicarea algoritmului
Ne vom folosi de teorema lui Pitagora pentru a determina distanța dintre două puncte.
Mai precis, vom proiecta unul din puncte pe aceeași ordonată ca și celălalt,
formând un triunghi dreptunghic. Iată această proiecție pentru exemplul nostru
de mai devreme (punctul verde este (3, 4)
, cel roșu este (4, 5)
, iar
punctul albastru este proiecția — (4, 4)
):
Observăm două lucruri:
- Proiecția are același
y
ca și primul punct și acelașix
ca și al doilea (așadar, pentru punctele(x1, y1)
și(x2, y2)
, proiecția ar fi(x2, y1)
— observăm că și punctul(x1, y2)
este bun); - În noul triunghi dreptunghic format, distanța pe care noi vrem să o aflăm este ipotenuza dintr-un triunghi dreptunghic.
Așadar, distanța pe care vrem să o aflăm, ip
, este egală cu sqrt(c12 + c22)
. Această valoare este egală cu diferența de x
și de y
al celor două
puncte. Așadar, ip = sqrt((x1 - x2)2 + (y1 - y2)2)
.
Implementare C++
Iată o rezolvare în C++:
#include <iostream>
#include <cmath> //Ne trebuie biblioteca cmath pentru a avea acces la funcția de radical (sqrt)
using namespace std;
int main()
{
//Declarăm și citim coordonatele punctelor
int x1, y1, x2, y2;
cout << "Primul punct: ";
cin >> x1 >> y1;
cout << "Al doilea punct: ";
cin >> x2 >> y2;
//Diferența de x și y din formula de mai devreme
//Pentru că ridicăm aceste numere la pătrat, nu contează semnul lor
int deltaX = (x2 - x1);
int deltaY = (y2 - y1);
//Calculul și afișarea distanței
double distanta = sqrt(deltaX * deltaX + deltaY * deltaY);
cout << "Distanta este " << distanta;
return 0;
}
DS
Autorul acestei lecții
Dominic Satnoianu
Această lecție a fost redactată de către Dominic Satnoianu.
© 2021 – 2025 Aspire Education Labs SRL. Toate drepturile rezervate.
Așa cum este specificat și în termeni și condiții, conținutul acestei pagini este protejat de legea drepturilor de autor și este interzisă copierea sau modificarea acestuia fără acordul scris al autorilor.
Încălcarea drepturilor de autor este o infracțiune și se pedepsește conform legii.
Comentarii 0