Sunteți pe pagina 1din 6

Ministerul Educaţiei al Republicii Moldova

Universitatea Tehnică a Moldovei

Catedra ISA

RAPORT
Lucrarea de laborator nr.1
la Programarea Orientată pe Obiecte

A efectuat:
st. gr. AI-161 S. Chiu

A verificat:
Lector univ. M. Oșovschi

Chişinău 2017
Lucrarea de laborator nr.1

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.

Condiţia problemei (sarcina de lucru):


Varianta 2:
a) Scrieţi un program care efectuează înmulţirea cifrelor unui număr dat.
b) Scrieţi un program care calculează numărul de elemente dintr-o listă simplu
lănţuită care sînt mai mici ca valoarea medie aritmetică a tuturor elementelor
acestei liste.

Codul (textul) programului în limbajul C:


#include <stdio.h>
#include <stdlib.h>

float* AlocareTab(int n)
{
float* A = NULL;
int i;
A = (float*)malloc(n*sizeof(float));
if (!A)
{
printf("Memoria nu a fost alocata!");
exit(1);
}
else printf("Memoria a fost alocata cu succes!");
return A;
}

void initTab(float* T, int n)


{
int i;
for (i=0; i<n; i++)
{
scanf("%f", &T[i]);
2
}
}

float lab1a(float* T, int n)


{
int i;
float y = 1;
for (i = 0; i < n; i++)
{
y=y*T[i];
}
return y;
}

typedef struct lista


{
int val;
struct lista* next;
}lista;
lista *head;

int createL(int n)
{
lista *c, *p;
int i;
for (i=0; i<n; i++)
{
c=(lista*)malloc(sizeof(*c));
if (!c){return i+1;}
if (i==0) {head=c;}
else {p->next=c;}
p=c;
}
c->next=NULL;
return 0;
}

void initL(void)
{
lista *c;
c=head;
puts("Introduceti lista:");
while(c)
{
printf("Introdu nodul:");
3
scanf("%d",&c->val);
c=c->next;
if (head==c) break;
}
}

void showL(void)
{
lista *c;
printf("Lista introdusa:");
c=head;
while(c)
{
printf("\n%d", c->val, c->next);
c=c->next;
if (c==head) {break;}
}
}

void lab1b(int *n, float *media, int *suma, int *i)


{
lista *c;
*n = 0;
*media = 0;
*suma = 0;
*i = 0;
c=head;
while(c)
{
*suma += c->val;
c=c->next;
if (c==head) {break;}
(*i)++;
}
*media = (float)(*suma)/(float)(*i);
c=head;
while(c)
{
if ((float)c->val < (*media))
{
(*n)++;
}
c=c->next;
if (c==head) {break;}
}
4
}

int main()
{
int i, n, k, x, j, s;
float y, m;
float* T = NULL;
printf("Sarcina I: Scrieti un program care efectueaza inmultirea cifrelor unui
numar dat.");
printf("Introdu numarul de cifre ce va contine numarul dorit, n =");
scanf("%i", &n);
T = AlocareTab(n);
printf("Introdu numarul dorit de n = %i cifre=>", n);
initTab(T, n);
y = lab1a(T, n);
free(T);
printf("Rezultatul inmultirii cifrelor este y = %f\n\n", y);
printf("Sarcina II: Scrieti un program care calculeaza numarul de elemente dintr-o
lista simplu lantuita care sunt mai mici ca valoarea medie aritmetica a tuturor
elementelor acestei liste.\n");
printf("Introdu numarul de noduri ale listei: ");
scanf("%i", &i);
j = createL(i);
if (j != 0)
{
printf("Memoria nu a fost alocata!");
exit(1);
}
initL();
showL();
lab1b(&k, &m, &s, &x);
printf("\nNumarul de elemente in lista = %d\nSuma nodurilor = %d\nMedia
aritmetica a nodurilor = %.2f\nNumarul de elemente mai mici ca valoarea medie =
%d", x, s, m, k);
}

5
Rezultatele obținute:

Figura 1 – Screenshot-ul rezultatelor

Concluzii:
În lucrarea dată de laborator ne-am familiarizat cu limbajul C++, cu
reprezentările tipurilor de date în memoria calculatorului, cu operatorii și
instrucțiunile ciclice și de condiție al limbajului. În varianta respetivă am lucrat cu
tablou unidimensional alocând memoria dinamic și eliberând-o la finalul execuției
programului, iar în subsarcina “b” – am utilizat concepția de listă simplu înlănțuită,
declarând structura listă și scriind câteva funcții de realizare a sarcinilor necesare.
Astfel, am repetat limbajul C standart și am făcut o inițiere în limbajul C++,
observând diferențele, avantajele și dizavantajele limbajului C++ față de C.

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