Se dau 4 puncte prin coordonatele lor în plan. Definind o funcţie, ce determină distanţa
dintre 2 puncte, să se verifice dacă cele 4 puncte considerate reprezintă sau nu vârfurile
unui paralelogram şi, în caz afirmativ, să se calculeze suma diagonalelor
paralelogramului respectiv.
REZOLVARE IN CODEBLOCKS (C++)
Răspunsuri la întrebare
#include <iostream>
#include <math.h>
using namespace std;
double len(double x, double y){
return sqrt(x*x + y*y);
}
struct punct{
double x;
double y;
};
punct vec[4],O;
struct diag{
punct *a = (PUNCT*) 0ULL, *b;
};
diag diag_a, diag_b;
int main(){
for(int i = 0; i < 4; i++)
cin >> vec[i].x >> vec[i].y;
int o[2],p;
for(int i = 0; i < 4; i++){
for(int j = i+1; j < 4; j++){
p = 0;
for(int k = 0; k < 4; k++){
if(k != i && k != j)o[p++] = k;
}
if(vec[i].x + vec[j].x == vec[o[0]].x + vec[o[1]].x && vec[i].y + vec[j].y == vec[o[0]].y + vec[o[1]].y){
diag_a.a = &vec[i];
diag_a.b = &vec[j];
diag_b.a = &vec[o[0]];
diag_b.b = &vec[o[1]];
break;
}
}
}
if(diag_a.a){
cout << "Suma diagonalelor este: " << (len(diag_a.a->x- diag_a.b->x, diag_a.a->y - diag_a.b->y)+len(diag_b.a->x- diag_b.b->x, diag_b.a->y - diag_b.b->y));
}else{
cout << "NU REPREZINTA UN PARALELOGRAM";
}
}