online: 5; azi: 1037; total: 53043 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 triunghiuri: laturile, aria, perimetrul şi tipul triunghiului (oarecare, isoscel etc.). Numărul n şi dimensiunile laturilor triunghiurilor se citesc dintr-un fişier text, în care pe primul rând, este scris numărul n, iar apoi pe fiecare rând, dimensiunile laturilor unui triunghi. Să se afişeze informaţiile despre triunghiuri, grupate după tip (grupa triunghiurilor isoscele, a triunghiurilor oarecare etc.).
# include < iostream >
# include < fstream >
# include < cmath >
using namespace std ;
struct Triunghi {
double l1, l2, l3; // laturile triunghiului
double aria, perimetru; // aria si perimetrul triunghiului
string tip; // tipul triunghiului
};
int main () {
int n; // numarul de triunghiuri
Triunghi triunghiuri[ 100 ]; // vectorul cu triunghiuri
// citirea datelor din fisier
ifstream in ( "triunghiuri.txt" ) ;
in >> n;
for ( int i = 0 ; i < n; i++) {
in >> triunghiuri[i].l1 >> triunghiuri[i].l2 >> triunghiuri[i].l3;
// calculam aria si perimetrul triunghiului
double p = triunghiuri[i].l1 + triunghiuri[i].l2 + triunghiuri[i].l3;
triunghiuri[i].perimetru = p;
triunghiuri[i].aria = sqrt (p/ 2 *(p/ 2 -triunghiuri[i].l1)*(p/ 2 -triunghiuri[i].l2)*(p/ 2 -triunghiuri[i].l3));
// determinam tipul triunghiului
if (triunghiuri[i].l1 == triunghiuri[i].l2 && triunghiuri[i].l2 == triunghiuri[i].l3) {
triunghiuri[i].tip = "echilateral" ;
} else if (triunghiuri[i].l1 == triunghiuri[i].l2 || triunghiuri[i].l2 == triunghiuri[i].l3 || triunghiuri[i].l1 == triunghiuri[i].l3) {
triunghiuri[i].tip = "isoscel" ;
} else {
triunghiuri[i].tip = "oarecare" ;
}
}
in. close ();
// gruparea triunghiurilor dupa tip
for ( string tip : { "echilateral" , "isoscel" , "oarecare" }) {
cout << "Triunghiuri " << tip << ":" << endl ;
for ( int i = 0 ; i < n; i++) {
if (triunghiuri[i].tip == tip) {
cout << "Laturi: " << triunghiuri[i].l1 << " " << triunghiuri[i].l2 << " " << triunghiuri[i].l3 << endl ;
cout << "Aria: " << triunghiuri[i].aria << endl ;
cout << "Perimetru: " << triunghiuri[i].perimetru << endl ;
cout << endl ;
}
}
}
return 0 ;
}

În acest program, se citește dintr-un fișier text numărul de triunghiuri și dimensiunile laturilor acestora. Pentru fiecare triunghi, se calculează aria și perimetrul, precum și tipul triunghiului. Apoi, triunghiurile sunt grupate după tip și se afișează informațiile despre fiecare triunghi în parte.