Sunteți pe pagina 1din 5

Universitatea Tehnic a Moldovei

FCIM

RAPORT
la lucrarea de laborator nr. 7

la Programarea in limbajul C++

Tema: abloane

A efectuat: st. gr. TI 152 Staver Vasile

A verificat: Lisnic Ana


Chiinu 2016
Scopul lucrrii:
Studierea necesitii abloanelor;
Studierea regulilor de definire i utilizare a abloanelor;
Studierea specializrii abloanelor;
Studierea potenialelor probleme rezolvate cu ajutorul abloanelor;

Sarcina lucrarii:

) Creai o funcie ablon, care schimb dup perechi elementele masivelor n felul urmtor:
primul element va avea valoarea sumei perechii, dar al doilea diferenei perechii.
De exemplu: lista- 0 2 3 4 3 6, rezultatul 2 2 7 1 9 3.

1 #include<iostream>
2
3 using namespace std;
4
5 template<class T>
6 void transf(T *tab1, int num1)
7 {
8 int i;
9 T *a;
10 a = new T[num1];
11 for (int i = 0; i < num1; i++) {
12 a[i] = tab1[i] + tab1[i + 1];
13 a[i + 1] = tab1[i] - tab1[i + 1];
14 i++;
15 }
16 cout << "Afisam tabloul initial:" << endl;
17 for (i = 0; i < num1; i++) {
18 cout << tab1[i] << ' ';
19 }
20 cout << endl;
21 cout << "Afisam tabloul modificat:" << endl;
22 for (i = 0; i < num1; i++)
23 cout << a[i] << ' ';
24 }
25
26 int main(void)
27 {
28
29 int num, i;
30
31 cout << "Afisam operatii cu vectorul de tip int:" << endl;
32 cout << "Introduceti dimensiunea vectorului: ";
33 cin>>num;
34 int *tabi = new int [num];
35 cout << "Introduceti vectorul: ";
36 for (int i = 0; i < num; i++)cin >> tabi[i];
37 transf(tabi, num);
38 float *tabf = new float[num];
39 cout << endl << endl;
40 cout << "Afisam operatii cu vectorul de tip float:" << endl;
41 cout << "Introduceti vectorul: ";
42 for (i = 0; i < num; i++)cin >> tabf[i];
43 transf(tabf, num);
44
45 return 0;
46
47 }
b) Creai clasa parametrizat Matrix matrice. Clasa trebuie s conin constructorii,
destructorii i funciile getRows, getCols, operatorii [], +, -, * i operatorii de intrare/ieire.
1 #include<iostream>
2
3 using namespace std;
4
5
6 template<class K>
7 class Matrix {
8 private:
9 K **matrix;
10 int n;
11 void alloc();
12 void free();
13 public:
14 Matrix();
15 Matrix(int);
16 Matrix(Matrix<K>&);
17 ~Matrix();
18 Matrix& operator+(Matrix<K>&);
19 Matrix& operator-(Matrix<K>&);
20 Matrix& operator=(Matrix<K>&);
21 K*operator[](int);
22
23 friend ostream& operator<<(ostream& os, Matrix<K>& m)
24 {
25 for (int i = 0; i < m.n; i++) {
26 for (int j = 0; j < m.n; j++)
27 os << m.matrix[i][j] << " ";
28 os << endl;
29 }
30 return os;
31 }
32
33 friend istream& operator>>(istream& is, Matrix<K>& m)
34 {
35 m.free();
36 is >> m.n;
37 m.alloc();
38 for (int i = 0; i < m.n; i++)
39 for (int j = 0; j < m.n; j++)
40 is >> m.matrix[i][j];
41 return is;
42 }
43 };
44
45 template<class K>
46 void Matrix<K>::alloc()
47 {
48 matrix = new K*[n];
49 for (int i = 0; i < n; i++)
50 matrix[i] = new K[n];
51 for (int i = 0; i < n; i++)
52 for (int j = 0; j < n; j++)
53 matrix[i][j] = 0;
54 }
55
56 template<class K>
57 void Matrix<K>::free()
58 {
59 if (matrix == NULL)return;
60 for (int i = 0; i < n; i++)
61 delete[]matrix[i];
62 }
63
64 template<class K>
65 Matrix<K>::Matrix()
66 {
67 matrix = NULL;
68 n = 0;
69 }
70
71 template<class K>
72 Matrix<K>::Matrix(int n)
73 {
74 this->n;
75 alloc();
76 }
77
78 template<class K>
79 Matrix<K>::Matrix(Matrix<K>& m)
80 {
81 n = m.n;
82 alloc();
83 for (int i = 0; i < n; i++)
84 for (int j = 0; j < n; j++)
85 matrix[i][j] = m.matrix[i][j];
86 }
87
88 template<class K>
89 Matrix<K>::~Matrix()
90 {
91 // free();
92 }
93
94 template<class K>
95 Matrix<K>& Matrix<K>::operator+(Matrix<K>& m)
96 {
97 Matrix<K> *tmp = new Matrix<K>(*this);
98 for (int i = 0; i < tmp->n; i++)
99 for (int j = 0; j < tmp->n; j++) {
100 tmp->matrix[i][j] += m.matrix[i][j];
101 }
102 return * tmp;
103 }
104
105 template<class K>
106 Matrix<K>& Matrix<K>::operator-(Matrix<K>& m)
107 {
108 Matrix<K> *tmp = new Matrix<K>(* this);
109 for (int i = 0; i < tmp->n; i++)
110 for (int j = 0; j < tmp->n; j++)
111 tmp->matrix[i][j] -= m.matrix[i][j];
112 return *tmp;
113 }
114
115 template<class K>
116 Matrix<K>& Matrix<K>::operator=(Matrix<K>& m)
117 {
118 free();
119 this->n = m.n;
120 alloc();
121 for (int i = 0; i < n; i++)
122 for (int j = 0; j < n; j++)
123 matrix[i][j] = m.matrix[i][j];
124 return *this;
125 }
126
127 template<class K>
128 K* Matrix<K>::operator[](int i)
129 {
130 return matrix[i];
131 }
132
133 int main()
134 {
135
136 Matrix<int> a(3);
137 Matrix<int> b(a);
138 Matrix<int> t(a);
139
140 cout << "Introduceti matricea A: ";
141 cin >> a;
142 //cout << "\n\n\nBla = " << a;
143 cout << "\nIntroduceti matricea B: ";
144 cin>>b;
145 t = a + b;
146 cout << "a+b= " << endl << t << endl;
147 t = a - b;
148 cout << "a-b= " << endl << t << endl;
149 cout << "\nElementul [0][1] din t = " << t[0][1];
150
151 return 0;
152 }

S-ar putea să vă placă și

  • PSI ParteI V 30 09 2017
    PSI ParteI V 30 09 2017
    Document200 pagini
    PSI ParteI V 30 09 2017
    Chicu Roman
    Încă nu există evaluări
  • AMSI Lab6
    AMSI Lab6
    Document6 pagini
    AMSI Lab6
    fr4nky95
    Încă nu există evaluări
  • Laboratorul6 BDC
    Laboratorul6 BDC
    Document6 pagini
    Laboratorul6 BDC
    fr4nky95
    Încă nu există evaluări
  • Lucrare de Laborator NR. 2: Sisteme Multimedia
    Lucrare de Laborator NR. 2: Sisteme Multimedia
    Document4 pagini
    Lucrare de Laborator NR. 2: Sisteme Multimedia
    fr4nky95
    Încă nu există evaluări
  • PR Lab2-3
    PR Lab2-3
    Document5 pagini
    PR Lab2-3
    fr4nky95
    Încă nu există evaluări
  • SM12
    SM12
    Document6 pagini
    SM12
    fr4nky95
    Încă nu există evaluări
  • PR Lab2-3
    PR Lab2-3
    Document5 pagini
    PR Lab2-3
    fr4nky95
    Încă nu există evaluări
  • Untitled 10
    Untitled 10
    Document5 pagini
    Untitled 10
    fr4nky95
    Încă nu există evaluări
  • Cap 4
    Cap 4
    Document18 pagini
    Cap 4
    fr4nky95
    Încă nu există evaluări
  • Cap 5
    Cap 5
    Document20 pagini
    Cap 5
    fr4nky95
    Încă nu există evaluări
  • Cap 6
    Cap 6
    Document25 pagini
    Cap 6
    fr4nky95
    Încă nu există evaluări
  • 612
    612
    Document73 pagini
    612
    verginarojnita
    Încă nu există evaluări
  • Cap. 2
    Cap. 2
    Document26 pagini
    Cap. 2
    Andrei Carp
    Încă nu există evaluări
  • Cap 3
    Cap 3
    Document35 pagini
    Cap 3
    fr4nky95
    Încă nu există evaluări
  • Oceanul Pacific
    Oceanul Pacific
    Document6 pagini
    Oceanul Pacific
    fr4nky95
    Încă nu există evaluări
  • Laborator 1 Conditii
    Laborator 1 Conditii
    Document7 pagini
    Laborator 1 Conditii
    fr4nky95
    Încă nu există evaluări
  • Metode Numerice Lab 1
    Metode Numerice Lab 1
    Document6 pagini
    Metode Numerice Lab 1
    fr4nky95
    Încă nu există evaluări
  • Cap 1
    Cap 1
    Document21 pagini
    Cap 1
    DumitruGuba
    Încă nu există evaluări
  • ACSO Cuprins
    ACSO Cuprins
    Document9 pagini
    ACSO Cuprins
    DumitruGuba
    Încă nu există evaluări
  • Economia Curs2 1
    Economia Curs2 1
    Document10 pagini
    Economia Curs2 1
    fr4nky95
    Încă nu există evaluări
  • Mecanica CIM 2017 Nu Tiparim PDF
    Mecanica CIM 2017 Nu Tiparim PDF
    Document37 pagini
    Mecanica CIM 2017 Nu Tiparim PDF
    Dorin Gribincea
    Încă nu există evaluări
  • Partea 5 Mec Cuantica Tiparim
    Partea 5 Mec Cuantica Tiparim
    Document38 pagini
    Partea 5 Mec Cuantica Tiparim
    fr4nky95
    Încă nu există evaluări
  • Programa FCIM Nu Tiparim PDF
    Programa FCIM Nu Tiparim PDF
    Document24 pagini
    Programa FCIM Nu Tiparim PDF
    fr4nky95
    Încă nu există evaluări
  • Tema 12
    Tema 12
    Document1 pagină
    Tema 12
    fr4nky95
    Încă nu există evaluări
  • Economia Curs2 1
    Economia Curs2 1
    Document9 pagini
    Economia Curs2 1
    fr4nky95
    Încă nu există evaluări
  • 4 Oscilatii Si Unde - Tiparim PDF
    4 Oscilatii Si Unde - Tiparim PDF
    Document55 pagini
    4 Oscilatii Si Unde - Tiparim PDF
    fr4nky95
    Încă nu există evaluări
  • Oceanul Pacific
    Oceanul Pacific
    Document6 pagini
    Oceanul Pacific
    fr4nky95
    Încă nu există evaluări
  • Lab 2
    Lab 2
    Document2 pagini
    Lab 2
    fr4nky95
    Încă nu există evaluări
  • Economia Ramurii Conspect
    Economia Ramurii Conspect
    Document32 pagini
    Economia Ramurii Conspect
    fr4nky95
    Încă nu există evaluări