online: 3; azi: 790; total: 52796 Manual clasa a xi a - Implementarea structurilor de date - Alocarea dinamica a memoriei

Manual clasa a Xi a

Implementarea structurilor de date

Alocarea dinamica a memoriei

Scrieţi următoarele programe în care folosiţi alocare dinamică a memoriei:
a. Citiţi de la tastatură temperatura, presiunea şi numărul de moli ai unui gaz şi calculaţi volumul lui.
b. Citiţi de la tastatură numărătorul şi numitorul a două fracții, calculați suma şi produsul celor două fracții, simplificați rezultatele obținute şi apoi afişaţi suma şi produsul.
c. Citiţi de la tastatură coordonatele a două colțuri ale unui dreptunghi ( colţul din stânga sus şi colţul din dreapta jos) şi afişați dimensiunea diagonalei dreptunghiului.
d. Citiţi de la tastatură temperaturile medii zilnice din luna precedentă şi afişați temperatura medie a lunii, şi zilele în care temperaturile au fost mai mari decât media.
# include < iostream >
using namespace std ;
int main () {
float temp , pres , n;
cout << " Introduceti temperatura (in Kelvin): " ;
cin >> temp ;
cout << " Introduceti presiunea (in Pascal): " ;
cin >> pres ;
cout << " Introduceti numarul de moli: " ;
cin >> n;
float * v = new float ( 8.31 * n * temp / pres ); // alocare dinamica a memoriei pentru volumul gazului
cout << "Volumul gazului este: " << *v << " metri cubi" << endl ;
delete v; // dezalocare memorie
return 0 ;
}
# include < iostream >
using namespace std ;
int gcd ( int a, int b) { // functie pentru calcularea cmmdc
if (b == 0 )
return a;
return gcd (b, a % b);
}
int main () {
int num1, den1, num2, den2;
cout << " Introduceti numaratorul si numitorul primei fractii : " ;
cin >> num1 >> den1;
cout << " Introduceti numaratorul si numitorul celei de-a doua fractii : " ;
cin >> num2 >> den2;
// calcularea sumei si produsului celor doua fractii
int * sum_num = new int (num1 * den2 + num2 * den1);
int * sum_den = new int (den1 * den2);
int * prod_num = new int (num1 * num2);
int * prod_den = new int (den1 * den2);
// simplificarea sumei si produsului
int cmmdc_sum = gcd (* sum_num , * sum_den );
int cmmdc_prod = gcd (* prod_num , * prod_den );
* sum_num /= cmmdc_sum ;
* sum_den /= cmmdc_sum ;
* prod_num /= cmmdc_prod ;
* prod_den /= cmmdc_prod ;
// afisarea sumei si produsului
cout << "Suma celor doua fractii este: " << * sum_num << "/" << * sum_den << endl ;
cout << "Produsul celor doua fractii este: " << * prod_num << "/" << * prod_den << endl ;
// dezalocare memorie
delete sum_num ;
delete sum_den ;
delete prod_num ;
delete prod_den ;
return 0 ;
}
# include < iostream >
# include < cmath >
using namespace std ;
int main () {
float x1, y1, x2, y2;
cout << " Introduceti coordonatele coltului din stanga sus: " ;
cin >> x1 >> y1;
cout << " Introduceti coordonatele coltului din dreapta jos: " ;
cin >> x2 >> y2;
float * d = new float ( sqrt ( pow (x2 - x1, 2 ) + pow (y2 - y1, 2 ))); // alocare dinamica a memoriei pentru diagonala dreptunghiului
cout << "Diagonala dreptunghiului are lungimea: " << *d << endl ;
delete d; // dezalocare memorie
return 0 ;
}
# include < iostream >
using namespace std ;
int main () {
int n;
cout << " Introduceti numarul de zile din luna precedenta: " ;
cin >> n;
float * temps = new float [n]; // alocare dinamica a memoriei pentru temperaturile zilnice
float sum = 0 ;
for ( int i = 0 ; i < n; i++) {
cout << " Introduceti temperatura medie pentru ziua " << i+ 1 << ": " ;
cin >> *( temps+i );
sum += *( temps+i ); // adunarea temperaturilor pentru calcularea mediei
}
float avg = sum / n; // calcularea temperaturii medii
cout << "Temperatura medie a lunii este: " << avg << endl ;
// afisarea zilelor in care temperatura a fost mai mare decat medi a
cout << "Zilele in care temperatura a fost mai mare decat media sunt: " ;
for ( int i = 0 ; i < n; i++) {
if (*( temps+i ) > avg ) {
cout << i+ 1 << " " ;
}
}
cout << endl ;
// dezalocare memorie
delete [] temps ;
return 0 ;
}