Sunteți pe pagina 1din 4

Universitatea Tehnic a Moldovei

FCIM
Catedra Calculatoare

RAPORT
la lucrarea de laborator nr. 6
la programarea in limbajul C++

Tema: Templates: Template pentru clase i funcii.


Varianta 13

A efectuat:

st. gr. C-151 Enachi Nicolae

A verificat:

Lector superior Constantin Plotnic

Chiinu 2016
Scopul lucrrii:
Familiarizarea studenilor cu clase i funcii generice..
Sarcina:
13. S se scrie un program care implimenteaz o clas generic pentru o stiv.

Codul Programului:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
template<typename T> class Stiva{
public:
Stiva() {
varf = NULL;
count = 0;
}
~Stiva();
int size() const { return count; }
bool isEmpty() const { return varf == nullptr; }
const T& top() const {
if (isEmpty()) cout<< "Eroare! Stiva este Vida!";
return varf->data;
}
void push(const T& ob);
void pop();
private:
struct Element{
T data;
Element * below;
};
Element * varf;
int count;
};
template<typename T> void Stiva<T>::push(const T& ob){
if (isEmpty()) {
varf = new Element;
varf->data = ob;
varf->below = NULL;
count = 1;
}
else{
Element * p = new Element;
p->data = ob;
p->below = varf;
varf = p;
++count;
}
}
template<typename T> void Stiva<T>::pop(){
1

if (isEmpty()) throw "Eroare! Stiva este Vida!";


Element * q = varf;
varf = varf->below;
delete q;
--count;
}
template<typename T> Stiva<T>::~Stiva(){
while (varf != NULL)
{
Element * q = varf;
varf = varf->below;
delete q;
}
}
int main(){
int n,z;
Stiva<int> st;
cout << "\n Cite elemente doriti sa introduceti in stiva? ";
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> z;
st.push(z);
}
cout << " Stiva introdusa este : \n";
while (!st.isEmpty()){
cout << " " << st.top() << '\n';
st.pop();
}
st.~Stiva();
_getch();
return 0;
}

Rezultatele Testrii:

Concluzie:
n urma realizrii lucrrii respective de laborator am nvat utilizarea calselor
template(generice) i ne-am convins despre rolul lor foarte important n programare i anume
2

c template-urile snt foarte utile pentru realizarea de biblioteci care trebuie s ofere metode
generice de prelucrare a datelor fiindc Conceptul de template permite realizarea unei clase
generale care s accepte orice tip de element, inclusiv tipuri necunoscute la momentul
implementrii acesteia.