online: 2; azi: 604; total: 52610 Manual clasa a x a - Implementarea structurilor de date - Inregistrarea

Manual clasa a X a

Implementarea structurilor de date

Inregistrarea

Într-un vector cu înregistrări se păstrează atributele a n segmente din plan. Atributele segmentului sunt punctele de la extremităţile lui (precizate prin coordonatele lor) şi lungimea segmentului. Numărul n şi coordonatele punctelor de la extremitătile segmentelor se introduc de la tastatură. Să se afişeze segmentul (prin coordonatele punctelor din extremități) care are lungimea cea mai mare şi segmentul care are lungimea cea mai mică. Dacă există mai multe segmente care îndeplinesc aceste proprietăți, să se afişeze toate segmentele.
Pentru a rezolva această problemă, vom folosi o structură pentru a reprezenta fiecare segment din plan. Vom citi de la tastatură numărul de segmente, coordonatele punctelor de la extremitățile segmentelor și vom calcula lungimea fiecărui segment. Vom parcurge apoi vectorul de segmente și vom găsi segmentul cu lungimea maximă și segmentul cu lungimea minimă. Dacă există mai multe segmente care îndeplinesc aceste proprietăți, le vom afișa pe toate.
# include < iostream >
# include < cmath >
using namespace std ;
struct Punct {
double x, y;
};
struct Segment {
Punct A, B;
double lungime;
};
int main () {
int n;
cout << " Introduceti numarul de segmente: " ;
cin >> n;
// initializare variabile pentru segmentul cu lungimea maxima si minima
Segment segMax , segMin ;
segMax.lungime = -1 ;
segMin.lungime = INFINITY;
// citire coordonate segmente si calcul lungime
for ( int i = 0 ; i < n; i++) {
Segment seg ;
cout << "Segmentul " << i + 1 << ":" << endl ;
cout << "Coordonatele punctului A: " ;
cin >> seg.A.x >> seg.A.y ;
cout << "Coordonatele punctului B: " ;
cin >> seg.B.x >> seg.B.y ;
seg.lungime = sqrt ( pow ( seg.B.x - seg.A.x , 2 ) + pow ( seg.B.y - seg.A.y , 2 ));
// actualizare segment cu lungime maxima si minima
if ( seg.lungime > segMax.lungime ) {
segMax = seg ;
}
if ( seg.lungime < segMin.lungime ) {
segMin = seg ;
}
}
// afisare segmente cu lungime maxima si minima
cout << endl << "Segmentul cu lungimea maxima este definit de coordonatele punctelor: "
<< segMax.A.x << " " << segMax.A.y << " " << segMax.B.x << " " << segMax.B.y << endl ;
cout << "Segmentul cu lungimea minima este definit de coordonatele punctelor: "
<< segMin.A.x << " " << segMin.A.y << " " << segMin.B.x << " " << segMin.B.y << endl ;
return 0 ;
}

Programul citește numărul de segmente, apoi citește coordonatele celor n segmente și calculează lungimea fiecărui segment. În același timp, actualizează variabilele segMax și segMin cu segmentul cu lungimea maximă și, respectiv, minimă.
La final, afișează coordonatele punctelor care definesc cele două segmente.