Sunteți pe pagina 1din 5

Ministerul Educaţiei, Culturii și Cercetării al Republicii Moldova

Universitatea Tehnică a Moldovei

RAPORT
Lucrare de laborator nr. 1
la Programarea Orientată pe Obiecte (POO)

A efectuat:
st. gr. CR-181 D. Ursu

A verificat: M. Oșovschi

Chişinău -2019
Tema: Reprezentarea tipurilor de date ale limbajului C++ în memoria
calculatorului. Operatorii limbajului C++. Construcţiile elementare ale
limbajului C++ (instrucţiunile for, while, do-while, if-else, switch-break,
goto). Tipuri de date recursive, operaţii asupra listelor, arborilor. Construirea
şi elaborarea programelor recursive. Fişierele.

Scopul lucrării: familiarizarea studenţilor cu reprezentarea tipurilor de date ale


limbajului C++ în memoria calculatorului, operatorii limbajului C++,
construcţiile elementare ale limbajului C++ (instrucţiunile for, while, do-while,
if-else, switch-break, goto), tipuri de date recursive, operaţii asupra listelor,
arborilor, construirea şi elaborarea programelor recursive, lucrul cu fişierele.

Sarcina pentru lucrările de laborator:

4.

a.Scrieţi un program care converteşte un întreg într-un număr hexazecimal.

b. Scrieţi un program care permite crearea unui arbore binar şi traversarea lui
în inordine, preordine, postordine

a):

#include<iostream>
using namespace std;

int main()
{
long int decinum, rem, quot;
char hexdecinum[100];
int i=1, j, temp;
cout<<"Introduceti un numar decimal : ";
cin>>decinum;

quot = decinum;
while(quot != 0)
{
temp = quot % 16;
// pentru a converti intregul in caracter
if(temp < 10)
{
temp = temp + 48;
}
1
else
{
temp = temp + 55;
}
hexdecinum[i++] = temp;
quot = quot / 16;
}
cout<<"Valoarea hexazecimala a "<<decinum<<" este : ";
for(j = i - 1; j > 0; j--)
{
cout<<hexdecinum[j];
}
return 0;
}

b):

#include<iostream>
using namespace std;

struct Node {
char data;
struct Node *left;
struct Node *right;
};

//Function to visit nodes in Preorder


void Preorder(struct Node *root) {
if(root == NULL) return;

printf("%c ",root->data);
Preorder(root->left);
Preorder(root->right);
}

//Function to visit nodes in Inorder


void Inorder(Node *root) {
2
if(root == NULL) return;

Inorder(root->left);
printf("%c ",root->data);
Inorder(root->right);
}

//Function to visit nodes in Postorder


void Postorder(Node *root) {
if(root == NULL) return;

Postorder(root->left);
Postorder(root->right);
printf("%c ",root->data);
}

// Function to Insert Node in a Binary Search Tree


Node* Insert(Node *root,char data) {
if(root == NULL) {
root = new Node();
root->data = data;
root->left = root->right = NULL;
}
else if(data <= root->data)
root->left = Insert(root->left,data);
else
root->right = Insert(root->right,data);
return root;
}

Node* citeste_arbore(Node* root){


int n;
char a;
cout<<"Cate valori introduceti in arbore?\n";
cin>>n;
cout<<"Introduceti cele "<<n<<" valori:\n";
for(int i=0;i<n;++i){
cin>>a;

if(isalpha(a))
root = Insert(root,a);
}
return root;
3
}

int main() {
Node* root = NULL;
root = citeste_arbore(root);
//Print Nodes in Preorder.
cout<<"Preorder: ";
Preorder(root);
cout<<"\n";
//Print Nodes in Inorder
cout<<"Inorder: ";
Inorder(root);
cout<<"\n";
//Print Nodes in Postorder
cout<<"Postorder: ";
Postorder(root);
cout<<"\n";
}

Concluzie:
Efectuând lucrarea de laborator m-am familiarizat cu reprezentarea tipurilor de
date ale limbajului C++ în memoria calculatorului, operatorii limbajului C++,
construcţiile elementare ale limbajului C++, tipuri de date recursive, operaţii
asupra listelor, arborilor, construirea şi elaborarea programelor recursive, lucrul
cu fişierele, am creat codul meu conform sarcinii, dezvoltând deprinderi de
utilizare a limbajului C++, dar am și observat niște asemănări cu limbajului C...